如何在强制 JSON 序列化中出现“假”布尔值时省略过时的字段?

我正在使用 NewtonSoft 的 JSON 序列化程序。

我想在最终的 JSON 中省略很多字段。为此,我使用以下 JsonSerializerSettings:

string temp;
JsonSerializerSettings js = new JsonSerializerSettings();
js.DefaultvalueHandling = DefaultvalueHandling.Ignore;
temp = JsonConvert.SerializeObject(existing_root,Formatting.Indented,js);

这工作正常:确实省略了所有过时的字​​段。

但是,我有一个布尔字段,我想查看其中的值(为 false),但我不知道如何执行此操作。我是这样开始的:

[JsonProperty("DIAGNOSTICS")]
public bool DIAGNOSTICS { get; set; }

(我觉得这被省略是正常的,看到了设置。)

然后我尝试了以下方法以强制其存在:

[JsonProperty("DIAGNOSTICS")]
public bool DIAGNOSTICS { get; set; } = true;

(我以为,通过将默认值更改为 true,实际值 (false) 将不再被省略,但我错了:该字段仍会从 json 中省略。)

有谁知道对seraliser说的方法:

  • 不要省略那个特定的字段?”,或者:
  • "不要省略错误的布尔值?"

(如果可能,我更喜欢第一个解决方案)

提前致谢

beixingzidonghua 回答:如何在强制 JSON 序列化中出现“假”布尔值时省略过时的字段?

您应该能够将您的 JsonProperty 属性更改为:

[JsonProperty("DIAGNOSTICS",DefaultValueHandling = DefaultValueHandling.Populate)]

Try it online

本文链接:https://www.f2er.com/36730.html

大家都在问