我有以下Json集合,我需要将其表示为.Net集合。从本质上讲,它是一个键值对列表,键(col)可能具有dublicate(字典在此阶段已发布)。
我排序和分组会很好,但不是必需的。请问有什么帮助来确定最适合的.Net枚举吗?
[
{
"col": "thiscol",
"val": "thisval"
},
{
"col": "thiscol",
"val": "thisval2"
},
{
"col": "thiscol2",
"val": "thisval2"
},
{
"col": "thiscol3",
"val": "thisval3"
}
]
使用 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 循环获取值,