NetCore 统一处理 webapi 返回null 转为“”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了NetCore 统一处理 webapi 返回null 转为“”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1901字,纯文字阅读大概需要3分钟。
内容图文
原文:NetCore 统一处理 webapi 返回null 转为“”数据库中部分表字段允许空值,则代码中实体类对应的字段类型为可空类型Nullable<>,如int?,DateTime?,null值字段序列化返回的值都为null,前端对应字段赋值需要做null值判断,随想到全局把null替换为""
网上找的方案都是重写了DefaultContractResolver,但是该方法只能解决string类型null→""的问题,对其他可空类型无效。
研究了下git 上Newtonsoft.Json和.netcore MVC的源码
最终使用自定义JsonOutputFormatter方式实现:
publicclass MyJsonOutputFormatter : JsonOutputFormatter { public MyJsonOutputFormatter(JsonSerializerSettings serializerSettings) : base(serializerSettings, ArrayPool<char>.Shared) { } publicnew JsonSerializerSettings SerializerSettings => base.SerializerSettings; protectedoverride JsonWriter CreateJsonWriter(TextWriter writer) { if (writer == null) { thrownew ArgumentNullException(nameof(writer)); } var jsonWriter = new NullJsonWriter(writer) { ArrayPool = new JsonArrayPool<char>(ArrayPool<char>.Shared), CloseOutput = false, AutoCompleteOnClose = false }; return jsonWriter; } } publicclass NullJsonWriter : JsonTextWriter { public NullJsonWriter(TextWriter textWriter):base(textWriter) { } publicoverridevoid 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(); //设置首字母小写,如果不需要 则改为 DefaultContractResolver settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); //统一设置JsonResult中的日期格式 settings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; config.OutputFormatters.Insert(0, new MyJsonOutputFormatter(settings)); });
原文:https://www.cnblogs.com/lonelyxmas/p/11582289.html
内容总结
以上是互联网集市为您收集整理的NetCore 统一处理 webapi 返回null 转为“”全部内容,希望文章能够帮你解决NetCore 统一处理 webapi 返回null 转为“”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。