如何在强制 "false" 布尔值出现在 JSON 序列化中时忽略过时的字段?

How to omit obsolete fields while forcing "false" boolean values being present in JSON serialisation?

我正在使用来自 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.)

有没有人知道如何对序列化程序说:

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

提前致谢

您应该可以将 JsonProperty 属性更改为:

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

Try it online