2012-04-10 85 views
1

我有以下Json集合,我需要將它表示爲.Net集合。從本質上講,它是一個鍵 - 值對列表,其中的鍵(col)可能具有分支(字典在此階段)。將Json數組轉換爲最合適的.Net集合

我排序和分組會很好,但不是必需的。任何有助於確定什麼最好的.Net枚舉將是最合適的?

[ 
    { 
     "col": "thiscol", 
     "val": "thisval" 
    }, 
    { 
     "col": "thiscol", 
     "val": "thisval2" 
    }, 
    { 
     "col": "thiscol2", 
     "val": "thisval2" 
    }, 
    { 
     "col": "thiscol3", 
     "val": "thisval3" 
    } 
] 

回答

13

使用Json.Net

dynamic dynObj = JsonConvert.DeserializeObject(yourstring); 
foreach (var item in dynObj) 
{ 
    Console.WriteLine(item.col + " " + item.val); 
} 

JArray jArray = (JArray)JsonConvert.DeserializeObject(yourstring); 
var newlist = jArray.OrderByDescending(x => x["val"]).ToArray(); 

JArray jArray = (JArray)JsonConvert.DeserializeObject(yourstring); 
dynamic dynObj1 = jArray.OrderByDescending(x => x["val"]); 
foreach (var item in dynObj1) 
{ 
    Console.WriteLine(item.col + " " + item.val); 
} 

內置的Java類criptSerializer & dynamic

dynamic dynObj2 = new JavaScriptSerializer().Deserialize<List<object>>(yourstring); 
foreach (var item in dynObj2) 
{ 
    Console.WriteLine(item["col"] + " " + item["val"]); 
} 
1

您可以在此情況下,基本上是一個字典,它允許每個鍵多個值使用查找 - 使用LINQ功能可以投射到使用ToLookup()查找。請注意,查找是不可變的,但這可能不適合您的賬單。

另外當然也可以只使用使用集合爲你的價值類型Dictionary<T,IList<U>>(或IEnumerable<U>) - 字典是靈活的那樣。

1

IEnumerable<YourObject>其中YourObject是您定義的用於保存這些值的類。我建議使用​​來解析json。然後你可以使用linq來管理你返回的IEnumerable。

0

JArray arr = JArray.Parse(Your string);

之後使用循環來獲取值,