嵌套JSON对象的空例外

时间:2014-06-26 20:37:18

标签: c# json parsing json.net

我正在使用Newtonsoft反序列化JSON对象数组。除了完全嵌套的@attributes对象之外,我能够成功地反序列化整个对象。

以下是我要解析的项目的片段:

"item" : [{
"title" : "Bloody.Birthday.1981.1080p.BluRay.X264-7SinS",
"guid" : "https:\/\/api.nzb.su\/details\/35e799ce66c3290db629b68e3bac20f9",
"link" : "https://",
"comments" : "https://url",
"pubDate" : "Wed, 25 Jun 2014 12:47:16 -0400",
"category" : "Movies > HD",
"description" : "Bloody.Birthday.1981.1080p.BluRay.X264-7SinS",
"enclosure" : {
    "@attributes" : {
        "url" : "https://url",
        "length" : "6777211483",
        "type" : "application\/x-nzb"
    }
},
"attr" : [{
        "@attributes" : {
            "name" : "category",
            "value" : "2000"
        }
    }, {
        "@attributes" : {
            "name" : "category",
            "value" : "2040"
        }
    }, {
        "@attributes" : {
            "name" : "size",
            "value" : "6777211483"
        }
    }
  ]
 }
]

以下是我的课程,用于深入挖掘和填充项目:

public class item
{
    public string title { get; set; }
    public string pubDate { get; set; }
    public IList<Attr> attr { get; set; }
}

public class Attr
{

    public Attributes attribs { get; set; }
}


public class Attributes
{
    public string name { get; set; }
    public string value { get; set; }

}

我什么时候计算item.attr,我得到了正确的#但是如果我尝试实际获取列表中属性的名称/值,它会给我一个空错误。我做了很多研究,并且无法确定为什么它在列表中创建了适当的项目而不是项目中的值。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于@attributes在C#中不是有效的属性名称,因此您需要使用[JsonProperty]属性将其映射到JSON,例如:

public class Attr
{
    [JsonProperty("@attributes")]
    public Attributes attribs { get; set; }
}