gpt4 book ai didi

c# - 如何在使用 Newtonsoft.Json 序列化 json 时忽略默认值

转载 作者:太空狗 更新时间:2023-10-29 21:35:12 26 4
gpt4 key购买 nike

我正在使用 Newtonsoft.Json.JsonConvertTextbox (WinForms) 序列化为 json,我希望序列化跳过具有默认值或空数组的属性。

我尝试在 JsonSerializerSettings 中使用 NullValueHandling = NullValueHandling.Ignore 但似乎没有任何影响。

这是完整的代码示例(已简化):

JsonSerializerSettings settings = new JsonSerializerSettings()
{
Formatting = Formatting.None,
DefaultValueHandling = DefaultValueHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ObjectCreationHandling = ObjectCreationHandling.Replace,
PreserveReferencesHandling = PreserveReferencesHandling.None,
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
};

string json = JsonConvert.SerializeObject(textbox, settings);

有什么想法吗?

最佳答案

您可以使用标准的条件序列化模式:

private int bar = 6; // default value of 6
public int Bar { get { return bar;} set { bar = value;}}
public bool ShouldSerializeBar()
{
return Bar != 6;
}

关键是 public bool ShouldSerialize*() 方法,其中 * 是成员名称。 XmlSerializer、protobuf-net、PropertyDescriptor 等也使用了这种模式。

当然,这确实意味着您需要访问该类型。

关于c# - 如何在使用 Newtonsoft.Json 序列化 json 时忽略默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11628353/

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