是否有一个属性可以防止 Jil 序列化为 null 的属性?
在 Newtonsoft 中是:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
是否有一个属性可以防止 Jil 序列化为 null 的属性?
在 Newtonsoft 中是:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
对于整个对象,excludeNulls
参数 onOptions
就是你想要的(许多不同的 Options 配置是预先计算的,任何类似的东西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
不会是最难的事情,但从来没有人为此提出过问题。