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

本文关键字:Net 集合 转换 对象 Json 数组 | 更新日期: 2023-09-27 18:30:36

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

我排序和分组会很好,但不是必需的。请问有什么帮助来确定最适合的.Net枚举吗?

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

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

使用 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"]);
}

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

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

IEnumerable<YourObject>其中

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

你看过 NameValueCollection 吗?

JArray arr = JArray.Parse(Your string);

之后使用 for 循环获取值,