Jil 序列化程序忽略空属性
本文关键字:属性 序列化 程序 Jil | 更新日期: 2023-09-27 18:33:43
是否有属性可以阻止 Jil 序列化为 null 的属性?
在Newtonsoft中是:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
对于整个对象,Options
上的 excludeNulls
参数是您想要的(许多不同的选项配置是预先计算的,类似 Options.ExcludeNulls
的任何配置都可以)。
可以使用条件序列化控制单个属性的序列化。 (我在原始答案中忘记了此选项)。
例如
class ExampleClass
{
public string DontSerializeIfNull {get;set;}
public string AlwaysSerialize {get;set;}
public bool ShouldSerializeDontSerializeIfNull()
{
return DontSerializeIfNull != null;
}
}
JSON.Serialize(new ExampleClass { DontSerializeIfNull = null, AlwaysSerialize = null });
// {"AlwaysSerialize":null}
JSON.Serialize(new ExampleClass { DontSerializeIfNull = "foo", AlwaysSerialize = null });
// {"AlwaysSerialize":null,"DontSerializeIfNull":"foo"}
JSON.Serialize(new ExampleClass { DontSerializeIfNull = null, AlwaysSerialize = "bar" });
// {"AlwaysSerialize":"bar"}
JSON.Serialize(new ExampleClass { DontSerializeIfNull = "foo", AlwaysSerialize = "bar" });
// {"AlwaysSerialize":"bar","DontSerializeIfNull":"foo"}
吉尔只尊重[DataMember]
上的Name
选项。 我想尊重EmitDefaultValue
不会是最难的事情,但从来没有人为此打开过问题。