我正在尝试将 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);
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消