数据库中部分表字段允许空值,则代码中实体类对应的字段类型为可空类型Nullable<>,如int?,DateTime?,null值字段序列化返回的值都为null,前端对应字段赋值需要做null值判断,随想到全局把null替换为""

网上找的方案都是重写了DefaultContractResolver,但是该方法只能解决string类型null→""的问题,对其他可空类型无效。

研究了下git 上Newtonsoft.Json和.netcore MVC的源码

最终使用自定义JsonOutputFormatter方式实现:

public class MyJsonOutputFormatter : JsonOutputFormatter{public MyJsonOutputFormatter(JsonSerializerSettings serializerSettings) : base(serializerSettings, ArrayPool<char>.Shared){}public new JsonSerializerSettings SerializerSettings => base.SerializerSettings;protected override JsonWriter CreateJsonWriter(TextWriter writer){if (writer == null){throw new ArgumentNullException(nameof(writer));}var jsonWriter = new NullJsonWriter(writer){ArrayPool = new JsonArrayPool<char>(ArrayPool<char>.Shared),CloseOutput = false,AutoCompleteOnClose = false};return jsonWriter;}}public class NullJsonWriter : JsonTextWriter{public NullJsonWriter(TextWriter textWriter):base(textWriter){}public override void WriteNull(){this.WriteValue(String.Empty);}}

在 Startup 代码里面 修改

//services.AddMvc().AddJsonOptions(option => {//    //配置大小写问题,默认是首字母小写,该配置根据项目需要更改//    //option.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();//    //配置序列化时时间格式为时间戳//    //option.SerializerSettings.ContractResolver = new NullToEmptyStringResolver();//    option.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//});services.AddMvc(config =>{var settings = new JsonSerializerSettings();//设置首字母小写,如果不需要 则改为 DefaultContractResolversettings.ContractResolver = new CamelCasePropertyNamesContractResolver();//统一设置JsonResult中的日期格式    settings.DateFormatString = "yyyy-MM-dd HH:mm:ss";config.OutputFormatters.Insert(0, new MyJsonOutputFormatter(settings));});

转载于:https://www.cnblogs.com/rtwo/p/11578753.html

NetCore 统一处理 webapi 返回null 转为“”相关推荐

  1. jackson设置返回null为空字符串

    1.将接口返回的字段为null的设置为空字符串: import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jacks ...

  2. asp.net core 使用newtonsoft完美序列化WebApi返回的ValueTuple

    由于开发功能的需要,又懒得新建太多的class,所以ValueTuple是个比较好的偷懒方法,但是,由于WebApi需要返回序列化后的json,默认的序列化只能将ValueTuple定义的各个属性序列 ...

  3. Spring Boot 无侵入式 实现 API 接口统一 JSON 格式返回

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 无侵入式 统一返回JSON格式 其实本没有没打算写这篇博客 ...

  4. java异常统一处理,Controller层的异常统一处理及返回

    Controller层的异常统一处理及返回 一.为什么要做这件事? 不知道你平时在写Controller层接口的时候,有没有注意过抛出异常该怎么处理,是否第一反应是想着用个try-catch来捕获异常 ...

  5. Spring Boot 无侵入式 实现API接口统一JSON格式返回

    作者 | 小魏小魏我们去那里呀 来源 | blog.csdn.net/qq_34347620/article/details/102239179 无侵入式 统一返回JSON格式 其实本没有没打算写这篇 ...

  6. distinct返回null报错_distinct

    刚布署了的mysql查询报错: this is incompatible with DISTINCT 解决方法: 在mysql 配置文件my.ini 或者my.cnf 里添加: [mysqld] sq ...

  7. Spring Boot配置统一格式Result返回值(一)

    在Web开发中,前后端分离开发已经深入人心,这样的开发模式对于开发优雅美观的web应用非常有益.我在网上查阅了一些资料,学习了在Spring Boot开发中使用有利于前端小伙伴合作开发的统一格式返回值 ...

  8. PHPjson转数组返回NULL

    PHPjson转数组返回NULL 1.html_entity_decode函数是 把 HTML 实体转换为字符,引号字符转为引号 2.json_encode 转为数组 $lists = json_de ...

  9. R语言dim函数返回NULL

    R语言dim函数返回NULL 目录 R语言dim函数返回NULL 问题: 解决: dim函数可以返回dataframe.maitrix的shape; 一个常见的错误是将dim应用于一维向量或数组. 问 ...

最新文章

  1. 2017可以兼容那些jdk_2019从头跃——核心基础:何为JDK?Java开发工具包须知总览...
  2. 今天俺要说一说工厂方法模式(Factory)
  3. 2信号处理之:信号产生原因,进程处理信号行为,信号集处理函数,PCB的信号集,sigprocmask()和sigpending(),信号捕捉设定,sigaction,C标准库信号处理函数,可重入函数,
  4. [HNOI2010]公交线路
  5. Cookie操作以及如何在js中调用jsp变量
  6. 已婚男人的心理五大变化
  7. springmvc异常处理器
  8. mysql报tns无监听_oracle提示TNS:无监听程序的解决办法
  9. [LeetCode] Plus One 加一运算
  10. 分享Visual SVN Hook Script—— 允许客户端编辑SVN log message
  11. Directshow 采集-截屏和显示
  12. python learning note
  13. 利用Cytoscape进行生物相互作用网络可视化及拓扑分析
  14. 精密测量专题2--光栅基片预处理
  15. 转-国内移动广告平台的现状对比(2010年8月-10月)
  16. cad渐开线齿轮轮廓绘制_CAD渐开线齿形怎么绘制
  17. DAX Calculate的使用说明
  18. 如何禁止鼠标唤醒Win10?
  19. excel通过合并单元格“增加行高”(大于最大行高409)
  20. 网站中的js代码欢迎语,早上好,下午好……

热门文章

  1. 在Windows 2000下优化Oracle9i性能
  2. 首尔2017年公共区域全覆盖免费WiFi
  3. html特殊文字符号
  4. Martin Fowler 经典软件著作合集
  5. 使用 ssmtp 於 shell 透過 Gmail 寄信
  6. WPF RichTextBox的Document属性的序列化与反序列化
  7. OCS 2007 R2搭建后端SQL 2005企业版池
  8. 如何关闭Visual Studio Development Server
  9. Web前端JavaScript笔记(2)字符串
  10. 感恩节专宠有礼,送3本技术好书