2013-04-29 200 views
0

我的JSON字符串使用Json.net和C#反序列化嵌套的json字符串?

{"data":[{"id":"CAMVqgY1g1cdLU5anDL69Tt5pyRh51-qkyKMHWHgH2mAG+vn+xQ%40mail.gmail.com","content":"Coba ngirim email mohon diterima\r\n","judul":"coba 1","sender":"\"Aldo Erianda\""},{"id":"CAMVqgY1Trb5ZShRxzoX%3D0xaVQs5-Psh0J8V3JwQYVevcr8i5WA%40mail.gmail.com","content":"sampai nga ya\r\n","judul":"coba 2","sender":"\"Aldo Erianda\""}]} 

我想算里面的“数据”的记录,并显示在控制台或RichTextBox的记录。 几个教程仍然让我很难搞清楚。我应该如何一步一步做?

+1

http://stackoverflow.com/questions/7181983/json-net-deserialize-string-to-nested-class] – Freelancer 2013-04-29 04:38:02

回答

0

这应该适用于您的特定情况。它不能概括为任何json字符串。

var json = "{\"data\":[{\"id\":\"CAMVqgY1g1cdLU5anDL69Tt5pyRh51-qkyKMHWHgH2mAG+vn+xQ%40mail.gmail.com\",\"content\":\"Coba ngirim email mohon diterima\r\n\",\"judul\":\"coba 1\",\"sender\":\"Aldo Erianda\"},{\"id\":\"CAMVqgY1Trb5ZShRxzoX%3D0xaVQs5-Psh0J8V3JwQYVevcr8i5WA%40mail.gmail.com\",\"content\":\"sampai nga ya\r\n\",\"judul\":\"coba 2\",\"sender\":\"Aldo Erianda\"}]}"; 
var deserialized = JsonConvert.DeserializeObject<IDictionary<string, JArray>>(json); 
JArray recordList = deserialized["data"]; 
foreach (JObject record in recordList) 
{ 
    Console.WriteLine("id: " + record["id"]); 
    Console.WriteLine("content: " + record["content"]); 
    Console.WriteLine("judul: " + record["judul"]); 
    Console.WriteLine("sender: " + record["sender"]); 
} 
Console.WriteLine("count: " + recordList.Count); 

注:我稍微逃避所有的报价,使之成为有效的C#字符串修改您的JSON。另外,我认为你的发件人的价值附近有额外的报价。

+0

它的工作原理..就像我期望的那样.. 无论如何,我是否需要额外类这样的下面: 类ResponseEntity { 公共ResponseEntity() { 数据=新列表(); } public list data; } class data { public string id {get;组; } public string content {get;组; } public string judul {get;组; } public string sender {get;组; } } – 2013-04-29 05:15:38

+0

这取决于你试图完成什么,这些类可能是有用的。我认为ResponseEntity类可能会过度杀伤。我只是将这些信息存储在列表中。 – 2013-04-29 05:21:16

+0

可否请你解释这部分.. ** var deserialized = JsonConvert.DeserializeObject >(json); ** 如果你不介意。 – 2013-04-29 05:21:56