关于Newtonsoft Json.NET中Required与NullValueHandling设置对序列化/反序列化行为的技术问询
Newtonsoft Json.NET中Required与NullValueHandling设置对序列化/反序列化行为的技术问询
我翻遍了各种资料,都没找到一份能把Newtonsoft Json.NET里Required和NullValueHandling各种组合下的序列化、反序列化行为讲透彻的参考表格。所以特意来这儿发起这个问题,之后我会自己补充对应的答案。
先把背景说清楚,这些设置可以在多个层级配置:
- 属性级:直接标注在C#类的属性上,比如:
public class Person { [Newtonsoft.Json.JsonProperty("firstname", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public string Firstname { get; set; } [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public bool? Enabled { get; set; } = true; }
- 类级:通过
JsonObject特性统一设置整个类的默认规则,比如:
[Newtonsoft.Json.JsonObject(ItemRequired=Newtonsoft.Json.Required.Always, ItemNullValueHandling=Newtonsoft.Json.NullValueHandling.Include)] public class Person {...}
- 序列化器全局设置级:
NullValueHandling还可以在调用SerializeObject/DeserializeObject时,通过JsonSerializerSettings来配置全局规则。
现在核心的疑问是:
当.NET对象的属性为null时,这些设置组合会如何影响序列化行为?
当反序列化时,JSON文本里的对应字段是null,或者完全缺失时,这些设置组合又会如何影响反序列化行为?
我真的没在任何地方找到过整理好的清晰参考,希望能得到明确的解答,之后我也会把整理好的表格补充上来。
备注:内容来源于stack exchange,提问作者cm08
相关产品推荐
相关产品推荐

