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);
→ Ссылка