2015-05-11 64 views
0

我有一個類型爲字符串對象的字典userData。 我做了一個http調用來獲取數據。用戶數據的在c中循環字典對象#

internal static Dictionary<string, object> userData = null; 

**userData = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(httpData);** 

結構是這樣的

{ 
    "id": "12345", 
    "class": [ 
     "my-user", 
     "college-student" 
    ], 
    "list": [ 
     { 
      "a": "CSE", 
      "b": "DataBase" 
     }, 
     { 
      "a": "IT", 
      "b": "ComputerNetwork" 
     } 
    ] 
} 

現在我要遍歷這個用戶數據檢索的a和b的值。 可以請人幫我在C#中的代碼這樣做

+1

你可以只要你發佈你所做的任何嘗試,並描述什麼不起作用,就會有所幫助。 – Shar1er80

+0

將數據反序列化成反映數據的類(而不是像你似乎試圖通用的東西)可能更簡單。 – crashmstr

回答

1

最簡單的方法您目前有:

var arr = (JArray)userData["list"]; 

foreach (JObject item in arr) 
{ 
    Console.WriteLine("a: {0}", item["a"]); 
    Console.WriteLine("b: {0}", item["b"]); 
    Console.WriteLine(); 
} 

關鍵"list"userData的值是JObjectJArray,每個都包含一個"a""b"屬性。

然而,另一個(更好)的方法是創建表示JSON結構的幾類:

public class ListItem 
{ 
    public string A { get; set; } 
    public string B { get; set; } 
} 

public class MyClass 
{ 
    public string Id { get; set; } 
    public List<string> @Class { get; set; } 
    public List<ListItem> List { get; set; } 
} 

然後反序列化到的MyClass一個實例,而不是:

var userData = JsonConvert.DeserializeObject<MyClass>(json); 

foreach (ListItem item in userData.List) 
{ 
    Console.WriteLine("a: {0}", item.A); 
    Console.WriteLine("b: {0}", item.B); 
    Console.WriteLine(); 
} 
+0

我試着用foreach循環。它的工作正常。謝謝你的幫助 – aditya