我有以下json格式文件,排名输出
{
"12345": {
"ABC": {
"rank": 3,
"Comments": [
"Good"
]
},
"DEF": {
"rank": 2,
"Comments": [
"Good"
]
},
"GHI": {
"rank": 1,
"Comments": [
"Bad"
]
}
}
}
我有以下反序列化代码
JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, RankingsClass>>>(
System.IO.File.ReadAllText(rankingOutput));
public class RankingsClass
{
public int rank;
public string[] comments;
}
尽管上面的代码正确地反序列化了它,但我想知道是否有一个选项,以便我的反序列化程序将根据排名字段按升序返回字符串"ABC"、"DEF"和"GHI"。
尝试在结果集上使用 Linq,如下所示:
List<RankingsClass> list = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, RankingsClass>>>(System.IO.File.ReadAllText(rankingOutput));
return list.OrderByDescending(c => c.rank);
Dictionary
是一个无序集合。 您根本无法对其中的项目有任何订单的任何期望。 您需要使用实际排序的完全不同的数据结构,例如 SortedDictionary
。