Список записей API в C#
Коллекция на сервере часто приходит как JSON-массив
в корне ответа - строка начинается с "[", а не
с "{".
После GetStringAsync массив разбирают через
JsonDocument.Parse и берут
RootElement. Свойство GetArrayLength
даёт число элементов, а [0] - первый объект.
Адрес "/users" без суффикса возвращает десять
учебных пользователей; длина массива будет 10:
using System.Net.Http;
using System.Text.Json;
using HttpClient client = new();
string body = await client.GetStringAsync("https://jsonplaceholder.typicode.com/users");
using JsonDocument doc = JsonDocument.Parse(body);
JsonElement root = doc.RootElement;
Console.WriteLine(root.GetArrayLength());
Console.WriteLine(root[0].GetProperty("name").GetString());
Фильтр через параметры строки запроса меняет состав
массива на стороне сервера. Для
"/posts?userId=1" в ответе только посты
одного автора. У первого элемента читают
userId и длину title. Перед разбором
проверяют, что HTTP-код успешный, иначе в теле
может оказаться не JSON:
using System.Net.Http;
using System.Text.Json;
using HttpClient client = new();
using HttpResponseMessage response = await client.GetAsync("https://jsonplaceholder.typicode.com/posts?userId=1");
response.EnsureSuccessStatusCode();
using JsonDocument doc = JsonDocument.Parse(await response.Content.ReadAsStringAsync());
JsonElement first = doc.RootElement[0];
Console.WriteLine(first.GetProperty("userId").GetInt32());
Console.WriteLine(first.GetProperty("title").GetString()!.Length);
Разберите локальную строку
"["red","green","blue"]" и выведите
в консоль длину массива и первый элемент.