C#将json解析为泛型集合

时间:2011-12-24 22:57:56

标签: c# .net json

解析Google Plus 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? 是否可以将其解析为通用键/值集合?

3 个答案:

答案 0 :(得分:3)

您可以像

一样解析它
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是一个非常好的工具来帮助你

答案 1 :(得分:0)

我认为答案取决于您想要对数据做什么。如果您希望提取特定的信息,我将构建一个包含您要使用的元素的类,并为其余元素添加占位符,然后反序列化到该类中。

通过首先序列化一个示例类并验证它是否产生与您尝试解析的输出相同的输出,可以验证该类是否已正确构造。

答案 2 :(得分:0)

您可以使用

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

其中必须为json数据定义ElementType,可以是:

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

(这个我从某个地方拉出来并且它与你的JSON结构不对应) IE浏览器。它必须捕获您的JSON结构。

相关问题