使用C#中的嵌套类反序列化JSON。在哪里创建对象实例?

铝2110

我有一个具有以下结构的JSON:

{
    "firstname" : "Roger",
    "lastname" : "Moore",
    "age" : 89,
    "isAlive" : false,
    "address" :
    {
        "streetAddress" : "1 Main Street",
        "city" : London",
        "postCode" : "N1 3XX"
    }
}

我还有一个C#程序,该程序利用Newtonsoft JSON库来尝试反序列化此JSON。我创建了一个类,如下所示:

class JSONPerson
    {
        public String firstName { get; set; }
        public String lastName { get; set; }
        public int age { get; set; }
        public bool isAlive { get; set; }
        public address addr { get; set; }

        public class address
        {
            public String streetAddress { get; set; }
            public String city { get; set; }
            public String postCode { get; set; }
        }
    }

反序列化的操作如下:

JSONPerson jPerson = JsonConvert.DeserializeObject<JSONPerson>(strJSON);

有一个功能debugOutput,将输出打印到文本框。通过以下操作,我得到一个System.NullReferenceException:

debugOutput(jPerson.addr.postCode);

我了解为什么会这样。这是因为嵌套类尚未在任何地方实例化。但是,我不确定必须在何处完成此操作。

使用上述JSON和类的更简单版本(省略了地址),上述方法就可以正常工作。

用户2585

问题是您的JSONPerson中的地址被调用了,addr但是在您的JSON中它的调用了address

像这样更改您的JSON,一切都会好起来的。

{
    "firstname" : "Roger",
    "lastname" : "Moore",
    "age" : 89,
    "isAlive" : false,
    "addr" :
    {
        "streetAddress" : "1 Main Street",
        "city" : London",
        "postCode" : "N1 3XX"
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章