Jil 序列化程序忽略空属性

Jil serializer ignore null properties

是否有防止 Jil 序列化 null 属性的属性?

在 Newtonsoft 中是:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]

对于整个对象,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 只尊重 [DataMember] 上的 Name 选项。我想纪念 EmitDefaultValue 并不是最难的事情,但从来没有人为它打开过 issue