2011-12-24 126 views
1

解析Google Plus JSON對象C#解析JSON到泛型集合

使用C#和Newtonsoft.Json庫如何解析下面的json代碼?

[["tsg.lac", 
[[["3a4a7e8e0b3d5d66"],["Friends",null,"Your real friends, the ones you feel comfortable sharing private details with.",null,null,null,null,null,null,2,2,null,"00000000",1,1,1]] 
,[["5947b6d78a8231f3"],["Family",null,"Your close and extended family, with as many or as few in-laws as you want.",null,null,null,null,null,null,2,2,null,"00000001",2,1,1]] 
,[["22d0e3ec8c38fa24"],["Acquaintances",null,"A good place to stick people you've met but aren't particularly close to.",null,null,null,null,null,null,2,2,null,"00000002",5,1,1]] 
,[["1adf9b0b0987c2ad"],["Following",null,"People you don't know personally, but whose posts you find interesting.",null,null,null,null,null,null,2,2,null,"00000003",6,1,1]] 
,[["15"],["Blocked",null,null,null,null,null,null,null,null,2,1,null,"z9",null,1,1]]] 
,[] 
] 
] 

基本上,如果你不知道原始結構,你該如何解析Json? 是否有可能將其解析爲通用鍵/值集合?

回答

2

您可以分析它像

JArray jobj = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(jStr); 
foreach (var x in jobj[0][1]) 
{ 
    Console.WriteLine(x[0][0] + " " + x[1][2]); 
} 

和輸出將是

3a4a7e8e0b3d5d66你真正的朋友,也就是您覺得能夠自在分享私人信息。 5947b6d78a8231f3你的親密和大家庭,有你想要的儘可能多或少的公婆。 22d0e3ec8c38fa24這是一個很好的地方,可以幫助你認識但並不特別接近的人。 1adf9b0b0987c2ad您不認識的人,但您發現有趣的帖子。

PS:JsonView是一個很好的工具來幫助你

+0

男人你是傳奇人物,就像魅力一樣,正是我所尋找的。謝謝 – Tim 2011-12-24 23:20:18

+0

剛剛獲得JsonView它確實有助於瞭解JSON對象的結構。謝謝 – Tim 2011-12-24 23:35:47

+0

不客氣。 :) – 2011-12-24 23:39:16

0

我認爲答案取決於你想要處理的數據。如果你想要提取特定的信息,我會建立一個包含你正在使用的元素的類,併爲其餘的佔位符,然後反序列化到這個類中。

您可以通過首先序列化樣本類並驗證它是否產生與您要分析的輸出相同的輸出來驗證該類是否正確構建。

+0

那麼我的問題不是建設,以適應這個數據內,但分析任何JSON類成鍵/值集合,這樣我可以訪問類那些數據在後面。 – Tim 2011-12-24 23:07:29

0

你可以使用

JsonConvert.DeserializeObject<ElementType>("your json string here"); 

其中的ElementType必須爲JSON數據來定義,可能是這樣的:

[Serializable] 
public class ElementType 
{ 
    public string ConstituentID { set; get; } 
    public string Email { set; get; } 
} 

(這個我從什麼地方拉,它不符合你JSON結構) 也就是說。它必須捕獲你的JSON結構。

+0

那麼如何從上面的代碼捕獲Json結構呢? – Tim 2011-12-24 23:13:48