反序列化和排序

时间:2016-03-15 13:59:17

标签: c# json json.net

我有以下json格式文件,rankingOutput

{
    "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;
    }    

虽然上面的代码正确地反序列化,但我想知道是否有一个选项,以便我的反序列化器将返回字符串&#34; ABC&#34;,&#34; DEF&#34;和&#34; GHI&#34;按等级字段按升序排列。

2 个答案:

答案 0 :(得分:0)

尝试在结果集上使用Linq,如:

List<RankingsClass> list = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, RankingsClass>>>(System.IO.File.ReadAllText(rankingOutput));

return list.OrderByDescending(c => c.rank);

答案 1 :(得分:0)

Dictionary是一个无序集合。对于其中的项目,您无法对任何订单有任何期望。您需要使用实际排序的完全不同的数据结构,例如SortedDictionary