2012-04-10 70 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);

之后使用循环来获取值,