将Json对象数组转换为最合适的.Net集合

时间:2012-04-10 21:16:05

标签: c# .net json.net

我有以下Json集合,我需要将其表示为.Net集合。从本质上讲,它是一个键值对列表,其中键(col)可能具有dublicates(字典在此阶段已经出局)。

我排序和分组会很好但不是必需的。有任何帮助可以确定哪种最好的.Net枚举最合适吗?

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

5 个答案:

答案 0 :(得分: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);
}

内置JavaScriptSerializer& dynamic

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

答案 1 :(得分:1)

在这种情况下,您可以使用查找,基本上是一个允许每个键有多个值的字典 - 使用Linq,您可以使用ToLookup()投影到查找。请注意,查找是不可变的 - 这可能不适合您的账单。

或者当然,您可以使用集合作为您的值类型使用Dictionary<T,IList<U>>(或IEnumerable<U>) - 词典就像这样灵活。

答案 2 :(得分:1)

IEnumerable<YourObject>其中YourObject是您定义用于保存这些值的类。我建议使用Json.Net来解析json。然后你可以使用linq管理你得到的IEnumerable。

答案 3 :(得分:1)

你看过NameValueCollection吗?

答案 4 :(得分:0)

JArray arr = JArray.Parse(Your string);

之后使用for循环来获取值,