反序列化JSON结构

时间:2013-03-07 18:50:42

标签: c# json parsing deserialization

这是代码:

            var jss = new JavaScriptSerializer();
            GResponse dict = jss.Deserialize<GResponse>(jsonText);

这些是班级:

public class GResponse
{
    public List<GResponseData> responseData { get; set; }
    public string responseDetails { get; set; }
    public int responseStatus { get; set; }

}

public class GResponseData
{
    public List<GResult> results { get; set; }
    public List<GCursor> cursor { get; set; }
}

public class GResult
{
    public string GsearchResultClass { get; set; }
    public string unescapedUrl { get; set; }
    public string url { get; set; }
    public string visibleUrl { get; set; }
    public string cacheUrl { get; set; }
    public string title { get; set; }
    public string titleNoFormatting { get; set; }
    public string content { get; set; }
}

public class GCursor
{
    public string resultCount { get; set; }
    public List<GPages> PagesItems { get; set; }
    public string estimatedResultCount { get; set; }
    public int currentPageIndex { get; set; }
    public string moreResultsUrl { get; set; }
    public string searchResultTime { get; set; }
}
public class GPages
{
    public string start { get; set; }
    public int label { get; set; }
}

我一直试图反序列化以下json字符串一段时间没有成功。

{
    "responseData": {
        "results": [
            {
                "GsearchResultClass": "GwebSearch",
                "unescapedUrl": "irrelevant",
                "url": "irrelevant",
                "visibleUrl": "irrelevant",
                "cacheUrl": "irrelevant",
                "title": "irrelevant",
                "titleNoFormatting": "irrelevant",
                "content": "irrelevant"
            },
            {
                "GsearchResultClass": "GwebSearch",
                "unescapedUrl": "irrelevant",
                "url": "irrelevant",
                "visibleUrl": "irrelevant",
                "cacheUrl": "irrelevant",
                "title": "irrelevant",
                "titleNoFormatting": "irrelevant",
                "content": "irrelevant"
            }
        ],
        "cursor": {
            "resultCount": "irrelevant",
            "pages": [
                {
                    "start": "0",
                    "label": 1
                },
                {
                    "start": "28",
                    "label": 8
                }
            ],
            "estimatedResultCount": "irrelevant",
            "currentPageIndex": 0,
            "moreResultsUrl": "irrelevant",
            "searchResultTime": "0.27"
        }
    },
    "responseDetails": null,
    "responseStatus": 200
}

似乎没有出现任何错误,但是当我检查dict.responseData.Count时,由于某种原因它总是等于0。提前谢谢!

2 个答案:

答案 0 :(得分:1)

复制你的Json。转到Visual Studio然后编辑&gt;选择性粘贴 - &gt;将JSON粘贴为类。现在,您将看到Json的反序列化为c#,然后可以相应地调整现有的c#类。

注意:您必须打开一个C#文件才能获得“选择性粘贴”选项以及剪贴板中的一些有效JSON(已复制)。

答案 1 :(得分:0)

如果resonseData是列表,您还应该在JSON中将其作为列表/数组,因此请更改:

"responseData": {
   "results": ...
   "cursor: ...
}

到数组,包含一个元素:

"responseData": [
    {
        "results": ...
        "cursor: ...
    }
]