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