【问题标题】:JSON to Dictionary C# .Net 2.0 StandardJSON 到字典 C# .Net 2.0 标准
【发布时间】:2020-02-19 18:04:27
【问题描述】:

我正在下载以下格式的 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)

【问题讨论】:

标签: c# json dictionary .net-2.0


【解决方案1】:

我建议,首先使用 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);
}

【讨论】:

    【解决方案2】:

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

    首先,创建一个Item 类(或您选择的任何其他类名称)。

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

    其次,使用JsonConvert.DeserializeObject() 反序列化您的json,并使用Enumerable.ToDictionary() 将键指定为Description,将值指定为Id。此外,由于您的数据是 JSON 数组,因此您应该反序列化为 IEnumerable&lt;Item&gt; 以获得正确的结果。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多