C# 对象转jSON 如何排除NULL的属性

C# 对象转jSON 如何排除NULL的属性,第1张

你这种只能验证,如果为NULL,传一个“”给那个属性

如果你想为NULL就排除该属性,我没这么干过。如果你要这么做,以你用的DataContractJsonSerializer类,你需要给那个属性添加一个特性,这个需要用到反射,而且我还不知道能不能成功。

还有你为什么一定要用DataContractJsonSerializer,如果你想简单的进行序列化,完全可以用JavaScriptSerializer

jackson中,指定包含哪些属性、忽略哪些属性的注解

用于标记忽略一个或多个属性。可以注解在类上、构造函数、方法、字段上。

@JsonIgnore注解用于在字段级别标记要忽略的属性。注意:系列化和反系列化时都会被忽略。

1、bean

2、测试

3、控制台输出

反系列化时,json数据中明明包含了category值,但是最后Article对象的category属性值依然为null。就是因为使用了JsonIgnore。

我们可以使用@JsonInclude排除某些empty、null、默认值的属性。

2、controller

没有在Result类上加 @JsonInclude(JsonInclude.Include.NON_NULL) 注解时,返回的响应:

加了之后的返回的响应:

默认情况下,jackson获取public权限的字段进行系列化和反系列化。如果没有public权限的字段,就会去获取public修饰的getter/setter。使用 JsonAutoDetect注解,我们就可以修改默认的行为。比如,下面的案例,即使字段都是private的、也没有getter/setter,也照样获取字段。

1、bean

首先,我们定义一个属性id/name都私有的而且没有getter/setter的一个bean

2、反系列化测试:

报错:

3、系列化测试

报错:

4、bean上加上注解

5、再次分别测试反系列化、系列化

都运行正常,分别打印:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11642140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存