这是代码:
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。提前谢谢!
答案 0 :(得分:1)
复制你的Json。转到Visual Studio然后编辑&gt;选择性粘贴 - &gt;将JSON粘贴为类。现在,您将看到Json的反序列化为c#,然后可以相应地调整现有的c#类。
注意:您必须打开一个C#文件才能获得“选择性粘贴”选项以及剪贴板中的一些有效JSON(已复制)。
答案 1 :(得分:0)
如果resonseData
是列表,您还应该在JSON中将其作为列表/数组,因此请更改:
"responseData": {
"results": ...
"cursor: ...
}
到数组,包含一个元素:
"responseData": [
{
"results": ...
"cursor: ...
}
]