1

我有以下 Json 集合,我需要将其表示为 .Net 集合。本质上,它是一个键值对列表,其中的键 (col) 可能具有重复项(现阶段字典已出)。

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

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

5 回答 5

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"]);
}
于 2012-04-10T21:23:22.340 回答
1

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

当然,您也可以使用 a Dictionary<T,IList<U>>(or IEnumerable<U>)集合作为您的值类型 - 字典就是这样灵活的。

于 2012-04-10T21:18:09.703 回答
1

IEnumerable<YourObject>YourObject您定义的用于保存这些值的类在哪里。我建议使用Json.Net来解析 json。然后,您可以使用 linq 来管理您返回的 IEnumerable。

于 2012-04-10T21:20:03.163 回答
1

你看过NameValueCollection吗?

于 2012-04-10T21:29:34.960 回答
0

JArray arr = JArray.Parse(Your string);

之后使用 for 循环获取值,

于 2014-03-11T10:19:52.043 回答