我有一些必须序列化为JSON的数据。我正在使用JSON.NET。我的代码结构与此类似:
public struct structA { public string Field1; public structB Field2; public structB Field3; } public struct structB { public string Subfield1; public string Subfield2; }
问题是,我的JSON输出需要具有ON Field1OR Field2或ON- Field3取决于所使用的字段(即不为null)。默认情况下,我的JSON如下所示:
Field1
Field2
Field3
{ "Field1": null, "Field2": {"Subfield1": "test1", "Subfield2": "test2"}, "Field3": {"Subfield1": null, "Subfield2": null}, }
我知道我可以使用NullValueHandling.Ignore,但这给了我如下所示的JSON:
NullValueHandling.Ignore
{ "Field2": {"Subfield1": "test1", "Subfield2": "test2"}, "Field3": {} }
我需要的是:
{ "Field2": {"Subfield1": "test1", "Subfield2": "test2"}, }
有没有简单的方法可以做到这一点?
是的,您需要使用JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore。
JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore
但是由于结构是值类型,因此您需要将Field2标记为Field3,使其 可 为 空 以获取预期的结果:
public struct structA { public string Field1; public structB? Field2; public structB? Field3; }
或者只是使用类而不是结构。
文档: NullValueHandling枚举