Разбор JSON-тела в C#
Тело ответа API - это всегда текст.
Перед разбором его удобно сохранить в переменную, даже если строка уже задана в программе. Значение ключа само может быть объектом со своими полями.
Вложенный объект собирают отдельно и кладут в корень
под ключом user. Метод
JsonSerializer.Serialize превращает такую
структуру в одну строку JSON:
using System.Text.Json;
var person = new { name = "john", surn = "smit" };
var doc = new { user = person, city = "London" };
Console.WriteLine(JsonSerializer.Serialize(doc));
Готовый фрагмент JSON можно разобрать сразу в дерево
и обратиться к вложенным полям через цепочку
GetProperty:
using System.Text.Json;
string raw = "{\"user\": {\"name\": \"john\", \"surn\": \"smit\"}, \"city\": \"London\"}";
using JsonDocument doc = JsonDocument.Parse(raw);
Console.WriteLine(doc.RootElement.GetProperty("user").GetProperty("name").GetString());
Console.WriteLine(doc.RootElement.GetProperty("city").GetString());
Если в корне лежит массив строк, после разбора элементы доступны по индексу. Порядок в C# совпадает с порядком в JSON:
using System.Text.Json;
string raw = "[\"alpha\",\"beta\",\"gamma\"]";
using JsonDocument tags = JsonDocument.Parse(raw);
Console.WriteLine(tags.RootElement[0].GetString() + "," + tags.RootElement[1].GetString());
Дан код:
string raw = "{ \"title\": \"Atlas\", \"pages\": 320 }";
Разберите строку и выведите в консоль название и число страниц.