如何将缺少的json字段反序列化为null?

时间:2018-02-06 21:20:09

标签: c# json json.net

我有一个看起来像这样的JSON:

{
    "a": "foo",
    "b": {
        "c": "bar"
    }
}

有时,b字段不存在,如下所示:

{
    "a": "foo"
}

这是我将这个JSON反序列化为:

的类
public class MyObj
{
    private string _a;
    private MyType _b = new MyType();

    [Newtonsoft.Json.JsonProperty("a", 
    Required = Newtonsoft.Json.Required.Always)]
    public string A {
        get { return _a; }
        set { _a = value; }
    }

    [Newtonsoft.Json.JsonProperty("b",
    Required = Newtonsoft.Json.Required.DisallowNull,
    NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
    public MyType B {
        get { return _b; }
        set { _b = value; }
    }
}

在JSON中遇到丢失的b字段时的当前行为是它只是用new MyType()对象填充它。当JSON中缺少_b时,我希望将null设置为b

我似乎无法弄明白......但必须有办法做到这一点。救命啊!

1 个答案:

答案 0 :(得分:1)

从评论中:简单地替换 private MyType _b = new MyType()private MyType;解决了此问题。

多么令人尴尬