JSON 到字典 C# .Net 2.0 标准

JSON to Dictionary C# .Net 2.0 Standard

我正在下载以下格式的 JSON(我无法更改):

[
    {"Id":183,"description":"blahblahblah"},
    {"Id":184,"description":"blehblehbleh"},
    {"Id":1000,"description":"and so on..."}
]

如何将其转换为 Dictionary<string, string>,如下所示:

{
{"blahblahblah", "183"},
{"blehblehbleh", "184"},
{"and so on...", "1000"}
}

我正在使用 C# .Net Standard 2.0(也许我可以使用 .Net 4.x)

您可以使用 Newtonsoft.Json 将您的 JSON 反序列化到字典中。

首先,制作一个 Item class(或您选择的 class 的任何其他名称)。

public class Item
{
    [JsonProperty("Id")]
    public int Id { get; set; }

    [JsonProperty("description")]
    public string Description { get; set; }
}

其次,使用 JsonConvert.DeserializeObject()and assign the key as Description and the value as Id using Enumerable.ToDictionary() 反序列化您的 json。此外,由于您的数据是 JSON 数组,您应该反序列化为 IEnumerable<Item> 以获得正确的结果。

var json = "[{ \"Id\":183,\"description\":\"blahblahblah\"},{ \"Id\":184,\"description\":\"blehblehbleh\"},{ \"Id\":1000,\"description\":\"and so on...\"}]";

var deserializedJsonDict = JsonConvert
    .DeserializeObject<IEnumerable<Item>>(json)
    .ToDictionary(entry => entry.Description, entry => entry.Id);

foreach (var entry in deserializedJsonDict)
{
    Console.WriteLine($"Key={entry.Key}, Value={entry.Value}");
}

字典的输出键和值:

Key=blahblahblah, Value=183
Key=blehblehbleh, Value=184
Key=and so on..., Value=1000

我建议,首先使用 json2csharp

将您的 json 转换为 c# 模型

你的 json 模型看起来像

public class KeyValue
{
    public int Id { get; set; }
    public string description { get; set; }
}

然后使用Newtonsoft.Json.JsonConvert.DeserializeObject将json转换为对象

var results = Newtonsoft.Json.JsonConvert.DeserializeObject<List<KeyValue>>(jsonString);

终于用foreach移动到字典

Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
foreach (var keyvalue in results)
{
     keyValuePairs.Add(keyvalue.description, keyvalue.Id);
}