Урок 3 из 8 · 20 мин · обновлено
JSON: как читать ответ сервера
Что такое JSON, из чего он состоит: объекты, массивы, строки, числа, true, false и null. Как читать вложенные данные и находить нужное поле в ответе API.
Формат, на котором говорят API
Почти все современные API отправляют и принимают данные в формате JSON (JavaScript Object Notation). Это обычный текст, который легко читать и людям, и программам. Вот ответ учебного API на запрос GET https://dummyjson.com/products/1?select=title,price:
{
"id": 1,
"title": "Essence Mascara Lash Princess",
"price": 9.99
}
Параметр select попросил сервер вернуть только нужные поля, без него ответ гораздо длиннее.
Объекты и значения
Объект — набор пар «ключ: значение» в фигурных скобках:
- ключ — название поля, всегда в двойных кавычках:
"title"; - после ключа — двоеточие и значение;
- пары разделяются запятыми. После последней пары запятой нет.
Значения бывают разных типов:
| Тип | Пример | Что значит |
|---|---|---|
| строка | "Essence Mascara" |
текст, в двойных кавычках |
| число | 9.99, 194 |
без кавычек, дробная часть через точку |
| логическое | true, false |
да или нет |
| пусто | null |
значения нет |
| объект | {"city": "Москва"} |
вложенный набор полей |
| массив | ["beauty", "mascara"] |
список |
Тип важен. Если поле price должно быть числом, а приходит строка "9.99", приложение может не посчитать сумму корзины. Такие расхождения — частая находка при тестировании API.
Массивы и вложенность
Массив — список значений в квадратных скобках. Ответ на поиск GET https://dummyjson.com/products/search?q=phone&limit=2&select=title,price:
{
"products": [
{ "id": 101, "title": "Apple AirPods Max Silver", "price": 549.99 },
{ "id": 104, "title": "Apple iPhone Charger", "price": 19.99 }
],
"total": 23,
"skip": 0,
"limit": 2
}
products— массив объектов-товаров;total— сколько всего найдено: 23, хотя прислали только 2;skipиlimit— постраничная выдача: пропустить 0, вернуть 2. Так API не отдают тысячи записей за раз.
До нужного значения добираются по цепочке: products[0].title — это "Apple AirPods Max Silver". [0] — первый элемент массива: счёт начинается с нуля. Такая запись пригодится в уроке 7, когда будем проверять ответы автоматически.
Ошибки формата
Сервер не поймёт JSON с ошибкой и ответит кодом 400. Самые частые ошибки:
- одинарные кавычки вместо двойных:
{'title': 'Чай'}; - запятая после последней пары:
{"title": "Чай",}; - ключ без кавычек:
{title: "Чай"}; - комментарии — в JSON их не бывает.
Postman подсвечивает такие ошибки красным, а длинный ответ показывает с отступами — вкладка Pretty.
Попробуйте сами. Откройте в браузере https://dummyjson.com/carts/1. Найдите: сколько разных товаров в корзине, название первого из них, общую сумму корзины и номер пользователя, которому она принадлежит.
Как искать
Корзина — объект. В нём:
products— массив товаров. Количество разных товаров — число элементов массива, оно же продублировано в полеtotalProducts;- название первого товара —
products[0].title; - общая сумма — поле
totalсамой корзины, а сумма со скидкой — еёdiscountedTotal. Не перепутайте: такие же поля есть у каждого товара внутриproducts, там это сумма по одной позиции; - пользователь — поле
userId.
Если браузер показывает JSON одной длинной строкой, поищите вверху страницы переключатель форматирования. Если его нет, откройте этот адрес в Postman в уроке 4 — он покажет ответ с отступами.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Что в JSON записывают в квадратных скобках?
Квадратные скобки — массив, например список товаров. Фигурные — объект с ключами и значениями.
-
В ответе "price": 9.99 и "price": "9.99". Есть ли разница?
Тип важен: приложение может не посчитать сумму, если вместо числа придёт строка. Такие расхождения ловят на тестировании API.
-
Как добраться до названия первого товара в ответе {"products": [{"title": "iPhone"}]}?
products — массив, [0] — его первый элемент, title — поле этого элемента. Счёт в массивах начинается с нуля.