是否有一個屬性來防止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