C#将json反序列化为字典并反转KV

时间:2016-05-23 09:27:52

标签: c# json dictionary serialization

我正在尝试反序列化json并以最小的复杂度反转键/值。我有一个输入json,看起来像:

{
    "1":"apple",
    "2":"banana",
    "3":"orange",
    "4":"grape"
}

并希望将其序列化为Dictionary<string,string>,但要反转字典,以便结果为key,整数为value。有Newtonsoft.Json的任何方法吗?

var obj = JsonConvert.DeserializeObject<Dictionary<string,string>>(json);
// obj.Keys = { "1", "2", "3" }, but I want them to be { "apple", "banana", ... }

2 个答案:

答案 0 :(得分:3)

最简单的方法是从你反序列化的字典创建另一个字典:

JsonConvert.DeserializeObject<Dictionary<string,string>>(json)
    .ToDictionary(x => x.Value, x => x.Key);

答案 1 :(得分:0)

var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
            Dictionary<string, string> temp = new Dictionary<string, string>();
            Parallel.ForEach(obj, (item)=> {
                temp.Add(item.Value, item.Key);
            });

这是您可以实现此目的的简化方法。