3

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

在 Newtonsoft 中是:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
4

1 回答 1

3

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

于 2016-02-08T15:01:03.237 回答