2017-01-03 72 views
1

我試圖反序列化數據是exacly這樣的JSON在這個崗位>反序列化一個JSON容器陣列

Deserialize JSON Facebook feed using Gson,只有擁有更多的對象,在容器內..和我沒有使用「GSON」

我覺得有些物體甚至有自己的容器嵌套的地方,但不是目前的問題,主要的問題是,我有反序列化到下面的類問題..

public class Rootobject 
{ 
    public int found { get; set; } 
    public Post[] posts { get; set; } 
    public Meta meta { get; set; } 
} 

我理解API來自json的方式在Json.net文檔中,他們稱之爲數據集。我使用Json.Net

我最近嘗試反序列化的是;

List<Rootobject> data = JsonConvert.DeserializeObject<List<Rootobject>>(stringData); 

但仍然數據爲空,我得到;

其他信息:

無法反序列化當前JSON對象(例如{ 「名稱」: 「值」}) 成型 「System.Collections.Generic.List`1 [WebApplication17.Models。 Rootobject]' ,因爲該類型需要一個JSON數組(例如[1,2,3])來正確地反序列化 。

也許LINQ到JSON是不確定的方式..任何建議嗎?

回答

1

第一件事是JSON在帖子中是不是有效的JSON字符串,因此它不能被desearlized。其次我試圖糾正和糾正JSON,使之成爲有效的JSON,因此您的JSON看起來像

{ 
    "data": [ 
     { 
      "id": "105458566194298_411506355589516", 
      "message": "...", 
      "type": "status", 
      "created_time": "2012-11-25T17:26:41+0000", 
      "updated_time": "2012-11-25T17:26:41+0000", 
      "comments": { 
       "count": 0 
      } 
     }, 
     { 
      "id": "105458566194298_411506355589516", 
      "message": "...", 
      "type": "status", 
      "created_time": "2012-11-25T17:26:41+0000", 
      "updated_time": "2012-11-25T17:26:41+0000", 
      "comments": { 
       "count": 0 
      } 
     } 
    ] 
} 

因此類結構會是這樣的

public class Comments 
{ 
    public int count { get; set; } 
} 
public class Datum 
{ 
    public string id { get; set; } 
    public string message { get; set; } 
    public string type { get; set; } 
    public DateTime created_time { get; set; } 
    public DateTime updated_time { get; set; } 
    public Comments comments { get; set; } 
} 
public class MyData 
{ 
    public List<Datum> data { get; set; } 
} 

,然後Desearlize它通常像你在做

MyData data = JsonConvert.DeserializeObject<MyData>(stringData); 
+0

有道理..你通過修改反模式Json做了什麼。 我的代碼更像這樣,區別在於「發現」。 { 「發現」:12, 「上崗」: {}, {} ] } 公共類Rootobject { 公衆詮釋發現{獲得;組; } public post [] posts {get;組; } public List data {get;組; } public meta meta {get;組; } } Rootobject data = JsonConvert.DeserializeObject (stringData); 我無法改變Json,因爲它是來自Wordpress公共API ......無論如何,我接受了您的建議,並且我非常肯定它已經完成了這麼好的配偶。 –