猿问

如何将 Dictionary<string, int>().OrderByDescending

我正在尝试将 Dictionary 序列化为 .json 文件并从当前文件中反序列化它。


我有下一个代码:


string filePath = AppDomain.CurrentDomain.BaseDirectory;


Dictionary<string, int> dict = new Dictionary<string, int>() {   

    { "aaa", 1},

    { "bbb", 2},

    { "ccc", 3}

};

这很好用


File.WriteAllText(filePath + "IndexedStrings.json", JsonConvert.SerializeObject(dict, Newtonsoft.Json.Formatting.Indented));

结果是:


{

    "aaa": 1,

    "bbb": 2,

    "ccc": 3

}

但是当我使用这个时:


File.WriteAllText(filePath + "IndexedStrings.json", JsonConvert.SerializeObject(dict.OrderByDescending(kvp => kvp.Value), Newtonsoft.Json.Formatting.Indented));

结果是:


[

    {

        "Key": "ccc",

        "Value": 3

    },

    {

        "Key": "bbb",

        "Value": 2

    },

    {

        "Key": "aaa",

        "Value": 1

    }

]

我应该使用不同的方式来序列化Dictionary()还是如何反序列化它?


森栏
浏览 116回答 1
1回答

烙印99

正如其他人所指出的,通常您不应该关心对象属性的顺序。这是对象和数组之间的根本区别之一。但是,如果您坚持,您可以JObject从预先订购的对中手动构造 a 然后将其序列化:var jObj = new JObject();foreach (var kv in dict.OrderByDescending(x => x.Value)){&nbsp; &nbsp; jObj.Add(kv.Key, kv.Value);}var result = JsonConvert.SerializeObject(jObj, Newtonsoft.Json.Formatting.Indented);
随时随地看视频慕课网APP

相关分类

Go
我要回答