反序列化和排序



我有以下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

相关内容

  • 没有找到相关文章

最新更新