时间:2021-05-28
项目开发中不管是前台还是后台都会遇到烦人的null,数据库表中字段允许空值,则代码实体类中对应的字段类型为可空类型Nullable<>,如int?,DateTime?,null值字段序列化返回的值都为null,前台对应字段赋值需要做null值判断,怎么才能全局把null替换为空。
本文分享WebAPI接口服务统一返回null替换为空的方法。
.NET Core中使用Newtonsoft.Json进行序列化,WebAPI接口返回格式通过Startup.cs类全局设置。想是否可以通过配置把null替换为空值?于是找到了Newtonsoft.Json在序列化和反序列化期间如何处理空值和默认值的属性,具体配置代码如下:
public void ConfigureServices(IServiceCollection services){ //配置Mvc + json 序列化 services.AddMvc() .AddNewtonsoftJson(options => { //数据格式首字母小写 不使用驼峰 小驼峰firstName 大驼峰 FirstName options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); //使用默认方式,不更改元数据的key的大小写 //options.SerializerSettings.ContractResolver = new DefaultContractResolver(); // 忽略循环引用 options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; // 设置时间格式 options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //忽略空值 不包含属性的null序列化 //options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; //忽略默认值和null 1、不包含属性默认值和null //options.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Igno })}序列化和反序列化时需要忽略值为null的属性,设置SerializerSettings.NullValueHandling的值
序列化和反序列化时需要忽略默认值属性,设置SerializerSettings.DefaultValueHandling的值
通过上面的分析:一种是不包含属性的默认值序列化,另一种是不包含属性的null序列化,都不能满足目前的需求接口统一返回的null序列化为空。
1、项目WebAPI默认返回的JSON结果格式如下:
{ "code": 0, "msg": "查询成功", "data": { "id": 1, "title": "炎炎夏日暖暖肚", "describe": "", "author": null, "authorId": null, "linkSource": null, "author_Picture": null, "content": "炎炎夏日,很多人喜欢吃些寒凉的食物解暑,可这种做法非常伤身。", }}2、需要解决的问题把所有的null替换为空,具体如下图所示:
需要自己写一个NullToEmptyStringResolver类,然后重写CamelCasePropertyNamesContractResolver,但是该方法只能解决string类型null→""的问题,对其他可空类型无效,比如:int?、DateTime?等。
在Startup.cs代码里面修改,标记为红色的代码,如下所示:
修改完配置,重新运行完成,实现null替换为空的效果,运行结果如下所示:
.NET Core下Newtonsoft.Json序列化时字符串null替换成空,通过ContractResolver类为属性添加一些序列化设置、自定义属性名、设置时间格式、有选择性的序列化属性等,实现WebAPI返回JSON格式统一化。
到此这篇关于.NET Core 处理 WebAPI JSON 返回烦人的null为空的文章就介绍到这了,更多相关.NET Core WebAPI JSON 返回null内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
下面介绍WebApi中直接返回json字符串的方法。 具体代码如下:[HttpPost]publicHttpResponseMessageUpload()
前言现有的webapi一般都基于JSON的格式来处理数据,由于JSON是一个文本类的序列化协议所以在性能上自然就相对低效一些。在.net中常用Newtonsof
1.xml.exist输入为XQuery表达式,返回0,1或是Null。0表示不存在,1表示存在,Null表示输入为空2.xml.value输入为XQuery表
webapi写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法:方法一:(改配置法)找到Glob
要用ifnull,而不是isnullisnull是判断是否为null,返回值是1表示null或者0表示不为空ifnull等同于oracle的nvl,用法如下my