一尘不染

忽略Json.net中的空字段

json

我有一些必须序列化为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": null,
    "Field2": {"Subfield1": "test1", "Subfield2": "test2"},
    "Field3": {"Subfield1": null, "Subfield2": null},
}

我知道我可以使用NullValueHandling.Ignore,但这给了我如下所示的JSON:

{
    "Field2": {"Subfield1": "test1", "Subfield2": "test2"},
    "Field3": {}
}

我需要的是:

{
    "Field2": {"Subfield1": "test1", "Subfield2": "test2"},
}

有没有简单的方法可以做到这一点?


阅读 256

收藏
2020-07-27

共1个答案

一尘不染

是的,您需要使用JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore

但是由于结构是值类型,因此您需要将Field2标记为Field3,使其
以获取预期的结果:

public struct structA
{
    public string Field1;
    public structB? Field2;
    public structB? Field3;
}

或者只是使用类而不是结构。

文档:
NullValueHandling枚举

2020-07-27