2013-03-07 168 views
2

這是代碼:反序列化JSON結構

  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

如果resonseData是列表,你也應該有它在你的JSON列表/陣列,所以更改:

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

到陣列,包含一個元素:

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

我無法控制JSON .... – user2138167 2013-03-07 19:30:28

+0

如果你不能在JSON中改變responseData到數組,然後將它的類型從'List '改爲C#中的'GResponseData'。 – 2013-03-07 19:32:21

+0

謝謝!!!!!!! ! – user2138167 2013-03-07 19:41:59

1

複製你的JSON。轉到Visual Studio,然後編輯>選擇性粘貼 - >將JSON粘貼爲類。你現在將看到你的Json看起來像反序列化到C#,然後可以相應地調整你現有的C#類。

注意:您必須打開一個C#文件才能獲得「粘貼特殊」選項以及剪貼板中的一些有效JSON(已複製)。