Jil 序列化程序忽略空属性

本文关键字:属性 序列化 程序 Jil | 更新日期: 2023-09-27 18:33:43

是否有属性可以阻止 Jil 序列化为 null 的属性?

在Newtonsoft中是:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]

Jil 序列化程序忽略空属性

对于整个对象,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不会是最难的事情,但从来没有人为此打开过问题。