为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
森栏 2022-11-21 20:12:35
我正在尝试将 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()还是如何反序列化它?
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

正如其他人所指出的,通常您不应该关心对象属性的顺序。这是对象和数组之间的根本区别之一。


但是,如果您坚持,您可以JObject从预先订购的对中手动构造 a 然后将其序列化:


var jObj = new JObject();


foreach (var kv in dict.OrderByDescending(x => x.Value))

{

    jObj.Add(kv.Key, kv.Value);

}


var result = JsonConvert.SerializeObject(jObj, Newtonsoft.Json.Formatting.Indented);


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信