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 не будет самой сложной вещью, но никто никогда не открывал для этого проблему.

Другие вопросы по тегам