Jil сериализатор игнорирует нулевые свойства
Есть ли атрибут, который запрещает Jil сериализовать свойства, которые имеют значение null?
В Newtonsoft это:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
1 ответ
Решение
Для всего объекта excludeNulls
параметр на Options
это то, что вы хотите (много различных опций конфигурации предварительно рассчитаны, что-нибудь вроде 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"}
Джил только уважает Name
вариант на [DataMember]
, Я полагаю почитание EmitDefaultValue
не будет самой сложной вещью, но никто никогда не открывал для этого проблему.