JSON — це той непомітний герой, який робить взаємодію між клієнтом та сервером швидким та зручним. Якщо ви колись ловили себе на думці «чому відповідь від API виглядає так просто?» — Ласкаво просимо: зараз розберемося, як читати, формувати та свідомо «ламати» JSON, щоб розуміти поведінку REST‑сервісів та впевнено працювати у Postman та схожих інструментах.
Два основних формати передачі даних
При тестуванні API найчастіше зустрічаються два формати передачі даних: XML та JSON. XML — це стандартний формат для SOAP, тоді як JSON домінує в екосистемі REST API через простоту читання та менший обсяг.
Як влаштований JSON
У JSON як значення можуть виступати:
- об'єкт (JSON-object);
- масив (JSON-array);
- число (ціле або з плаваючою точкою);
- літерали true, false, null;
- рядок (обов'язково в лапках).
Для тестувальника це означає: у REST‑запитах та відповідях ви зазвичай побачите об'єкти та масиви з вкладеністю, і вміння швидко навігувати по них — ключ до ефективної роботи.
JSON-об'єкт
Об'єкт у JSON — це неупорядковане безліч пар "ключ:значення", укладене у фігурні дужки { }. Ключ завжди рядок і обов'язково береться до лапок. Значення може бути будь-яким із перелічених типів.
Наочний приклад запиту підказок (спрощено):
{
"query": "Віктор Іван",
"count": 7
}
Тут:
- "query" — ключ (параметр пошуку), значення — рядок;
- "count" — ключ, значення — число (кількість підказок).
Якщо сервер очікує на параметр з ім'ям ключа, саме за назвою ключа він буде отримувати значення. Порядок пар не грає ролі, але на практиці зустрічаються системи, які на це не спираються — такі випадки потрібно тестувати спеціально.
| Неправильно (як приклад) | Правильно |
| { "a": 1, { x:1, y:2 } } | { "a": 1, "inner_object": { "x":1, "y":2 } } |
| {"a": 1, [2,3,4] } | {"a": 1, "inner_array": [2,3,4] } |
Ключові правила для об'єктів:
- Ключі - завжди рядки і повинні бути в лапках (на відміну від JavaScript-літералу);
- Пари розділяються комами, а після останньої пари кома неприпустима;
- Можна використовувати прості ідентифікатори або віддавати перевагу snake_case / camelCase — важливо узгодити стандарт із командою.
Ключ чи властивість?
Терміни «ключ» і «властивість» часто використовуються як взаємозамінні. У контексті JSON коректно говорити і так, і так: ключ – це поле в парі "ключ: значення", властивість – атрибут об'єкта в об'єктно-орієнтованій моделі.
JSON-масив
Масив — це впорядкований набір значень, укладений у квадратні дужки []. Оскільки масиви впорядковані, доступ до елементів йде за індексом і перестановка елементів змінює зміст структури.
Приклади значень усередині масиву:
- числа: [1, 5, 10, 33]
- рядки: ["MALE", "FEMALE"]
- змішані типи: [1, "Андрюшка", 10]
- об'єкти як елементи: [1, {"a":1, "b":2}, "текст"]
Типова відповідь сервісу підказок - це масив об'єктів. Кожен елемент масиву — окрема підказка зі своїм набором полів та додатковим вкладеним об'єктом із даними.
| Структура | Приклад | Коментар |
|---|---|---|
| Масив рядків | ["MALE","FEMALE"] | Підходить для переліку варіантів (enum) |
| Масив об'єктів | [{"value":"Іванів","data":{...}}, {...}] | Часто використовується у відповідях API |
JSON vs XML
У SOAP зазвичай застосовують XML, а в REST — частіше JSON. Причини популярності JSON:
- менший обсяг даних (немає парних тегів, що повторюють назви полів);
- краще читаємо людьми, особливо при невеликих навантаженнях або роботі в Postman;
- широка підтримка у сучасних мовах та фреймворках.
| Критерій | JSON (оцінка 1–5) | XML (оцінка 1–5) |
|---|---|---|
| Читання | 5 | 3 |
| Розмір передачі | 5 | 2 |
| Підтримка складних схем | 4 | 5 |
| Стандартизація в REST | 5 | 3 |
Well Formed JSON (синтаксична коректність)
Для коректної роботи парсерів та серверів JSON має бути well formed — синтаксично правильним. Рекомендую звірятися з описом в RFC при глибокому вивченні, а для повсякденної валідації використовувати валідатори (наприклад, w3schools або популярні JSONLint) та інструменти на кшталт вбудованого валідатора в PostmanКоротко: основні правила:
- Дані в об'єкті записуються парами "ключ": значення;
- Пари та елементи масиву розділяються комами;
- Об'єкт — всередині фігурних дужок { };
- Масив — усередині квадратних дужок [ ].
1. Пари "ключ: значення"
В JSON ключ обов'язковий і має бути в лапках: "name":"Ольга". Врахуйте, що валідний JSON може бути не тільки об'єктом, але й одним значенням, наприклад, просто числом 123 або рядком "Ольга".
2. Коми між елементами
Часті помилки при ручному редагуванні JSON — зайва кома в кінці об'єкта або її відсутність між полями. Наприклад,
Неправильно:
{
"query":"Віктор Іван",
"count":7,
}
Правильно:
{
"query":"Віктор Іван",
"count":7
}
При додаванні поля через копіпаст легко залишити зайву кому - це часта причина помилок у тестах.
3. Фігурні дужки для об'єктів
Якщо система чекає на об'єкт, вона шукатиме фігурні дужки. Помилки: відсутність однієї з дужок або спроба передати об'єкт у вигляді масиву.
4. Квадратні дужки для масивів
Якщо система чекає на масив, використовуйте [ ]. Заміна ком на інший роздільник або спроба передати масив як об'єкт призведе до помилки парсингу.
Разом
JSON (JavaScript Object Notation) — текстовий, людино- та машиночитаний формат обміну даними, що широко використовується в REST API. Основні сутності: об'єкт (пари ключ: значення) та масив (упорядкований список значень). У JSON немає коментарів — це важливо пам'ятати при складанні прикладів у Postman.
| Поняття | Опис | Приклад |
|---|---|---|
| Об'єкт | Неупорядковане безліч пар "ключ: значення" | {"name":"Ольга", "age":30} |
| Масив | Упорядкований набір значень | [1,2,3] або ["a","b"] |
| Літерали | true, false, null | null |
Поради та цікаві факти про JSON
- Валідація перед відправкою: завжди проганяйте JSON через валідатор (Postman, JSONLint, w3schools), особливо при динамічній генерації тіла запиту.
- Мініфікація: для тестів навантаження відправляйте мінімізований JSON - це зменшить трафік і вплине на час відгуку.
- Тести на нечіткі типи: спробуйте передати числа як рядки і навпаки — деякі API мають строгу типізацію та видадуть зрозумілу помилку, інші — спробують навести типи.
- Перестановка ключів: переконайтеся, що сервер не залежить від порядку ключів — це логічна помилка в реалізації API.
- Логи та F12: під час налагодження GUI використовуйте вкладку Network у браузері — часто запити в прикладах документації видно саме там.
Часті питання
Як відрізнити JSON від об'єкта JavaScript?
JSON - текстовий формат зі строгими правилами (ключі в лапках, без коментарів). Об'єкт JavaScript у вашому коді допускає ідентифікатори без лапок і може містити функці
Чи можу я використовувати коментарі в JSON?
Ні. У стандарті JSON немає коментарів. Для приміток використовуйте документацію або окремі поля, але не в тілі запит
Що робити, якщо сервер повертає помилку синтаксичного аналізу JSON?
Перевірити дійсність JSON: лапки, коми, дужки. Використовуйте валідатор і перегляньте необроблене тіло запиту в інструменті розробника або Postma
Чому одні API повертають масив у його корені, а інші повертають об'єкт?
Це вибір архітектури API: масив працює для списку сутностей, об'єкт - для відповідей з метаданими (pagination, status тощо
