2013-05-02 50 views
2

我在研究.NET 4.5 System.Json庫的功能,但沒有太多文檔,並且由於受歡迎的JSON.NET庫而搜索相當棘手。使用System.Json對JSON進行迭代

我想知道,基本上,我怎麼就不斷循環,通過一些JSON例如:

{ "People": { "Simon" : { Age: 25 }, "Steve" : { Age: 15 } } }

我有一個字符串我的JSON,我想遍歷並顯示每個人的年齡。

首先,我會怎麼做:

var jsonObject = JsonObject.Parse(myString);

但當時我在旁邊做什麼損失。我很驚訝,解析方法返回一個JsonValue而不是JsonObject。

我想要做的真的是:

foreach (var child in jsonObject.Children) 
{ 
    if (child.name == "People") 
{ 
// another foreach to loop over the people 
// get their name and age, eg. person.Name and person.Children.Age (LINQ this or something) 

} 

} 

什麼想法?

回答

1

使用Json.Net和一些Linq

string json = @"{ ""People"": { ""Simon"" : { Age: 25 }, ""Steve"" : { Age: 15 } } }"; 

var people = JsonConvert.DeserializeObject<JObject>(json)["People"]; 

var dict = people.Children() 
       .Cast<JProperty>() 
       .ToDictionary(p => p.Name, p => p.Value["Age"]); 
+0

@Downvoter我仍在等待您的評論..... – I4V 2014-01-30 19:59:17

+1

雖然我不是downvoter,我可以告訴你認爲你被低估的原因是原來的問題專門詢問了有關System.Json而不是Json.NET的信息。至於爲什麼你的答案被接受,即使它不直接反對這個問題?呃。 – Danejir 2015-01-29 20:58:53

-1

爲善意使用json.net庫的要好得多那麼system.json本身

urclassobj = await JsonConvert.DeserializeObjectAsync<urclass>(json string) 

然後用使用LINQ的foreach你的對象

foreach(var details in urclassobj 
         .Select((id) => new { id= id}) 
         ) 
{ 
    Console.WriteLine("{0}", details.id); 
    } 

的名單和對象到JSON其

string json2Send = await JsonConvert.SerializeObjectAsync(urclassobject); 
+0

這看起來像是很好的信息,所以我沒有投票,但他明確表示他正試圖學習如何使用System.Json庫進行操作。鑑於這個問題更多的是關於學習而不是解決問題,這並沒有真正回答它... – 2013-05-02 13:34:58