JSON как формат обмена данными

JSON как формат обмена данными

Введение

Когда клиент и сервер обмениваются данными, им нужен общий язык. Сегодня стандартом де-факто стал JSON (JavaScript Object Notation). Это лёгкий, читаемый людьми формат, который понимают практически все языки программирования. Как тестировщик, ты будешь читать и анализировать JSON-ответы десятки раз в день.


Что такое JSON

JSON — текстовый формат представления структурированных данных. Несмотря на слово «JavaScript» в названии, JSON не зависит от языка и используется везде.

Базовые типы данных в JSON

ТипПримерЗаметки
Строка"Анна"Всегда в двойных кавычках
Число42, 3.14Без кавычек
Булевtrue, falseТолько строчные буквы
NullnullОтсутствие значения
Массив[1, 2, 3]Упорядоченный список
Объект{"key": "value"}Пары ключ-значение

Пример: объект пользователя

{
  "id": 42,
  "name": "Анна Иванова",
  "email": "anna@test.com",
  "isActive": true,
  "score": 98.5,
  "role": null,
  "tags": ["tester", "junior"],
  "address": {
    "city": "Москва",
    "street": "Тверская",
    "house": 10
  }
}

Здесь есть все типы: число (id), строки (name, email), булев (isActive), дробное число (score), null (role), массив (tags), вложенный объект (address).


JSON vs XML

КритерийJSONXML
ЧитаемостьВысокаяСредняя (много тегов)
РазмерКомпактныйБольше
ПоддержкаВсе языкиВсе языки
ИспользованиеREST API, конфигиSOAP, legacy-системы

Пример одних и тех же данных:

JSON:

{"name": "Анна", "age": 25}

XML:

<user>
  <name>Анна</name>
  <age>25</age>
</user>

JSON path нотация

Чтобы обратиться к конкретному полю в JSON, используется dot-notation:

response.user.address.city    → "Москва"
response.tags[0]              → "tester"
response.tags[1]              → "junior"

В Postman эту нотацию используют в тестах и при извлечении переменных.


Типичные баги в JSON-ответах

Вот что тестировщик должен проверять в JSON-ответах:

Тип багаПримерЧто проверять
Отсутствует обязательное полеid не пришлоВсе required поля присутствуют
Неправильный тип"age": "25" вместо "age": 25Числа — числа, строки — строки
null вместо значения"name": nullNull только там, где допустим
Лишние/вложенные данныеПришли пароли, внутренние idНет чувствительных данных
Синтаксическая ошибкаНезакрытая скобкаJSON вообще парсится

Как валидировать JSON

  • jsonlint.com — вставь JSON и проверь синтаксис.
  • Postman — автоматически форматирует и подсвечивает ошибки.
  • DevTools браузера → Network → Preview — красивое дерево ответа.
  • jq в терминале — мощный инструмент для работы с JSON в командной строке.

Частые ошибки тестировщиков

  • Не проверять типы данных. "42" (строка) и 42 (число) — это разные вещи для кода, хотя выглядят похоже.
  • Игнорировать вложенные объекты. Баг может быть внутри address.city, а не на верхнем уровне.
  • Не замечать лишние поля. Если в ответе пришёл passwordHash — это баг безопасности.
  • Забывать про пустые массивы vs null. [] и null — разные значения с разной семантикой.

Что мы запомним

  • JSON — текстовый формат для обмена данными, стандарт для REST API.
  • Типы: строка, число, булев, null, массив, объект.
  • JSON компактнее XML и проще читается.
  • Для навигации по JSON используй dot-notation: response.user.address.city.
  • Всегда проверяй: наличие обязательных полей, правильность типов, отсутствие чувствительных данных.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике