是否有一个属性可以阻止Jil序列化为null的属性?
在Newtonsoft中它是:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
答案 0 :(得分:3)
对于整个对象,Options
上的excludeNulls
参数是您想要的(许多不同的选项配置已预先调整,Options.ExcludeNulls
之类的任何内容也可以使用。)
您可以使用Conditional Serialization控制单个属性的序列化。 (我在原来的答案中忘了这个选项。)
例如
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"}
Jil仅尊重Name
上的[DataMember]
选项。我认为尊敬EmitDefaultValue
并不是最困难的事情,但没有人为它开过issue。