C# Обработать json файл с добавлением в Dictonary
Заранее спасибо за ответы) Есть json файл
[
{
"SameSite raw": "lax",
"This domain only": "Valid for host only",
"This domain only raw": "true",
"Store raw": "firefox-container-2",
"First Party Domain": ""
},
{
"First Party Domain": ""
},
{
"This domain only": "Valid for host only",
"This domain only raw": "true",
"Store raw": "firefox-container-4",
"First Party Domain": ""
}
]
Так как имена разные, модель данных не получится сделать. Мне нужно из json получать name: value Я делаю это так
string file= File.ReadAllText(patch);
var json= JsonConvert.DeserializeObject<Dictionary<string, string>>(file);
это работает с одним объектом json
{
"SameSite raw": "lax",
"This domain only": "Valid for host only",
"This domain only raw": "true",
"Store raw": "firefox-container-2",
"First Party Domain": ""
}
Но считать весь файл не могу, выдает ошибку. Подскажите как исправить.
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
У вас в JSON квадратные скобки - массив. Соответственно, в C# тоже используйте массив или список: Dictionary<string, string>[] или List<Dictionary<string, string>>.
var json = JsonConvert.DeserializeObject<Dictionary<string, string>[]>(file);
Здесь json - это массив словарей. Чтобы получить доступ к данным, нужно два вложенных цикла:
foreach (var dict in json)
foreach (var pair in dict)
Console.WriteLine(pair);
Или можно применить linq-метод SelectMany:
foreach (var pair in json.SelectMany(d => d))
Console.WriteLine(pair);