是否有一个属性来防止Jil序列化为空的属性?Jil序列化程序忽略空属性
在Newtonsoft是:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
是否有一个属性来防止Jil序列化为空的属性?Jil序列化程序忽略空属性
在Newtonsoft是:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
对于整个对象,在Options
的excludeNulls
参数是你想要的(许多不同的选项配置预calced,像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"}
吉尔只尊重上[DataMember]
的Name
选项。我认为兑现EmitDefaultValue
不会是最难的事情,但没有人为此打开过issue。
Jil是否承认应该添加“ShouldSerialize”方法或somthing? –
@guyAssaf .NET中的条件序列化是添加一个实例方法,为属性'XXX'返回名为'ShouldSerializeXXX()'的'bool'。 Jil尊重这一点。 –
@KevinMontrose:我该怎么做,当我想全局忽略所有的空值。就像我在做JSON.net'GlobalConfiguration.Configuration .Formatters .JsonFormatter .SerializerSettings .NullValueHandling = NullValueHandling.Ignore;'在gloabl.asax.cs文件 –
你看过https://github.com/kevin-montrose/Jil/issues/155吗? – HimBromBeere