将字典导出为JSON(按键排序)

时间:2018-09-25 08:45:41

标签: c# .net json dictionary

我有字典

Dictionary<string, object>

(值可以是字符串,整数或双精度型)。 我将字典导出到JSON文件:

JsonConvert.SerializeObject(myDict);

我希望保存的JSON按键排序。

4 个答案:

答案 0 :(得分:4)

如果您使用SortedDictionary<TKey, TValue>,它将按照键的顺序进行序列化:

var dict = new SortedDictionary<string, int>
{
    { "Z", 3 },
    { "B", 2 },
    { "A", 1 },
};

var json = JsonConvert.SerializeObject(dict);

Console.WriteLine(json);

输出:

{"A":1,"B":2,"Z":3}

答案 1 :(得分:1)

您可以使用SortedDictionary

https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.sorteddictionary-2?view=netframework-4.7.2

它按键对条目进行排序,因此您不需要自己进行任何排序。

答案 2 :(得分:0)

只需使用临时的SortedDictionary对象:

var unsortedDic = new Dictionary<string, int>
{
    {"Z", 3},
    {"B", 2},
    {"A", 1},
};

var sortedJson = JsonConvert.SerializeObject(new SortedDictionary<string, int>(unsortedDic));

输出:

{"A":1,"B":2,"Z":3}

答案 3 :(得分:-2)

您可以像这样对字典进行排序:

JsonConvert.SerializeObject(myDict.OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.Value));