gpt4 book ai didi

c# - Jil 序列化程序忽略空属性

转载 作者:行者123 更新时间:2023-11-30 21:51:45 30 4
gpt4 key购买 nike

是否有一个属性可以防止 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

关于c# - Jil 序列化程序忽略空属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35267108/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com