JSON в словарь C #. Net 2.0 Standard - PullRequest
0 голосов
/ 23 октября 2019

Я загружаю 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)

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Я предлагаю сначала преобразовать ваш json в модель c #, используя json2csharp

Модель для вашего 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);
}
1 голос
/ 23 октября 2019

Вы можете использовать Newtonsoft.Json для десериализации вашего JSON в словарь.

Во-первых, создайте класс Item (или любое другое имя класса, которое вы выберете).

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

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

Во-вторых, десериализуйте ваш json, используя JsonConvert.DeserializeObject(), и назначьте ключ как Description, а значение как Id, используя Enumerable.ToDictionary(). Кроме того, поскольку ваши данные представляют собой массив 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
...