#c# #json
Вопрос:
I have a JSON like below generatted by some external API
{
"0": {
"0": "Qty",
"1": "Code",
"2": "Description",
"3": "Unit",
"4": "Net"
},
"1": {
"0": "24",
"1": "42097805",
"2": "R Ball -G - Red",
"3": "8.85",
"4": "212.40"
},
"2": {
"0": "5",
"1": "32037405",
"2": "K Ball -G - Blue",
"3": "8.85",
"4": "212.40"
},
"3": {
"0": "12",
"1": "22192825",
"2": "X Ball -G",
"3": "8.85",
"4": "212.40"
}
}
Но при выполнении десериализации объекта значения индекса отображаются неправильно , так как строки являются динамическими по своей природе [«0″ ,»1»,….и т. д
Из комментариев с помощью словаря<строка, Словарь<строка, строка><строка, строка>> помогает завершить десериализацию объекта
Чтобы представить их визуально, мне нужно преобразовать в другую модель, которая выглядит следующим образом: Список<Словарь<строка, строка><строка, строка>>
=>
{
"0": "Qty",
"1": "Code",
"2": "Description",
"3": "Unit",
"4": "Net"
},
{
"0": "24",
"1": "42097805",
"2": "R Ball -G - Red",
"3": "8.85",
"4": "212.40"
},
{
"0": "5",
"1": "32037405",
"2": "K Ball -G - Blue",
"3": "8.85",
"4": "212.40"
},
{
"0": "12",
"1": "22192825",
"2": "X Ball -G",
"3": "8.85",
"4": "212.40"
}
Могу ли я преобразовать словарь<строка, Словарь<строка, строка><строка, строка>> в список<строка, строка>><Словарь<строка, строка><строка, строка>> без зацикливания
Комментарии:
1. десериализуется в
Dictionary<int, Dictionary<int, string>>
Ответ №1:
Если вы используете System.Text.Json
или Json.Net
обрабатываете json, вы можете десериализовать такую динамическую структуру во вложенные словари ( Dictionary<string, Dictionary<string, string>>
). Для exmaple для последнего это будет выглядеть так:
string json = ....
var deserializeObject =
JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(json);
Комментарии:
1. Десериализация будет работать с этим. Как насчет преобразования элементов словаря в список словарей без зацикливания? Можем ли мы сделать это с помощью LINQ
2. @Себастьян, не могли бы вы, пожалуйста, объяснить, что нужно немного подробнее?
3. Отредактировано далее, и, надеюсь, это объясняет необходимость
4. @Sebastian TBH это отдельный вопрос, но в целом это должно быть так же просто, как и
deserializeObject.Values.ToList()