我有一个具有以下结构的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和类的更简单版本(省略了地址),上述方法就可以正常工作。
问题是您的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] 删除。
我来说两句