Що таке JSON: синтаксис, типи даних і поширені помилки
JSON простими словами: синтаксис, шість типів даних, чому його використовують API, помилки, що його ламають, і як швидко читати та перевіряти JSON.
JSON (JavaScript Object Notation) — простий текстовий формат для структурованих даних. Саме ним більшість веб-API надсилають і приймають інформацію, у ньому багато застосунків зберігають налаштування, і через нього обмінюються даними браузери й сервери майже кожного сучасного сайту. Якщо ви колись відкривали файл, повний фігурних дужок і лапок, — ви бачили JSON.
У цьому посібнику пояснено синтаксис, типи даних, помилки, що найчастіше ламають JSON, і як читати та перевіряти його без спеціальних програм.
Як виглядає JSON
{
"name": "Versuss",
"articles": 46,
"bilingual": true,
"languages": ["en", "uk"],
"owner": { "country": "UA", "email": null }
}
Це один об’єкт із п’ятьма ключами. Кожен ключ — рядок у подвійних лапках, після нього двокрапка і значення. Пари розділяються комами, а весь об’єкт узято у фігурні дужки.
Шість типів даних
- Рядок (string) – текст у подвійних лапках:
"привіт". Спеціальні символи екрануються зворотною скісною рискою:"рядок один\nрядок два","слово в \"лапках\"". - Число (number) – цілі або дробові, можна з показником степеня:
42,-3.5,1e6. Без лапок, без нулів на початку, безNaNчиInfinity. - Логічне (boolean) –
trueабоfalse, малими літерами. - Null –
null, тобто «значення немає». - Масив (array) – упорядкований список у квадратних дужках:
[1, 2, 3]чи["en", "uk"]. Елементи можуть бути будь-якого типу, зокрема іншими масивами й об’єктами. - Об’єкт (object) – невпорядкований набір пар ключ/значення у фігурних дужках.
Це вся мова. Дат, коментарів і функцій у ній немає. Дати зазвичай передають рядками у форматі ISO 8601, наприклад "2026-10-19T14:30:00Z", або як Unix-час.
Чому JSON став стандартом
- Читається людьми і легко створюється та розбирається програмами.
- Підтримується всюди: кожна поширена мова програмування має вбудовану чи стандартну бібліотеку для JSON.
- Компактний порівняно з XML, де кожне значення потребує тегів відкриття й закриття.
- Природно відповідає об’єктам, спискам і словникам, якими вже користуються програмісти.
У запиті до API зазвичай видно заголовок Content-Type: application/json — він підказує серверу, як читати тіло. Як JSON рухається в реальних запитах, див. у статтях що таке REST API і методи REST API.
Помилки, що найчастіше ламають JSON
- Кома в кінці.
[1, 2, 3,]і{"a": 1,}— недійсні, хоча JavaScript їх приймає. - Одинарні лапки.
{'name': 'x'}— не JSON. Ключі й рядки потребують подвійних лапок. - Ключі без лапок.
{name: "x"}працює в JavaScript, але не в JSON. - Коментарі.
//і/* */заборонені. Деякі інструменти приймають «JSON з коментарями» (JSONC) для конфігурацій, але стандартні парсери його відхиляють. - Неекрановані символи. Звичайний перенос рядка чи неекранована подвійна лапка всередині рядка обривають його.
- Неправильне кодування чи невидимі символи. JSON має бути в UTF-8. Мітка порядку байтів (BOM) чи «типографські» лапки, скопійовані з текстового редактора, можуть зламати розбір.
- Величезні числа. JavaScript зберігає числа як 64-бітні з плаваючою комою, тож цілі понад приблизно 9 квадрильйонів втрачають точність. Тому API часто передають великі ID рядками.
Як читати й перевіряти JSON
Більшість браузерів показують JSON-відповідь у зручному вигляді з розгортанням, якщо відкрити URL API напряму. У консолі браузера рядок можна швидко перевірити:
JSON.parse('{"ok": true}') // { ok: true }
JSON.parse("{'ok': true}") // SyntaxError
JSON.stringify({ a: 1 }, null, 2) // відформатований текст
У терміналі jq форматує JSON і робить вибірки, а Python є на більшості систем:
curl -s https://api.example.com/items | jq '.[0].name'
python3 -m json.tool data.json
Якщо парсер повідомляє про помилку «на позиції 153», подивіться на кілька символів раніше: справжньою причиною зазвичай є пропущена кома чи лапка вище в тексті.
JSON Schema: опис коректних даних
Сам синтаксис не каже, чи мають дані сенс. JSON Schema — окремий стандарт, що описує очікувану структуру: наприклад, що email має бути рядком у форматі email, а age — числом не менше нуля. API використовують схеми, щоб перевіряти запити й генерувати документацію; опис API у форматі OpenAPI побудований на тій самій ідеї.
JSON порівняно з іншими форматами
- XML – багатослівніший, підтримує атрибути й простори імен, досі поширений у старих корпоративних системах, RSS-стрічках і офісних документах.
- YAML – зручніше писати вручну, підтримує коментарі, популярний для конфігурацій, як-от Docker Compose чи CI-конвеєри. Помилки у відступах — часте джерело багів. Коректний JSON є також коректним YAML.
- CSV – найкращий для плоских таблиць; вкладеність не передає.
- Бінарні формати, як-от Protocol Buffers чи MessagePack, – менші й швидші, але нечитабельні для людини; поширені у внутрішніх сервісах з великим навантаженням і gRPC.
Про безпеку
- Ніколи не перетворюйте JSON на код через
eval(); завжди використовуйте справжній парсер, наприкладJSON.parse. - Перевіряйте вхідний JSON перед використанням. Синтаксично правильний документ усе одно може містити неочікувані типи, величезні рядки чи глибоку вкладеність, розраховану на вичерпання пам’яті.
- Не кладіть секрети — API-ключі чи паролі — у JSON-файли, що потрапляють у репозиторій або публічно доступні.
Головне
- У JSON шість типів: рядок, число, логічне, null, масив і об’єкт.
- Ключі й рядки — у подвійних лапках; без ком у кінці й без коментарів.
- Це стандартний формат тіла для веб-API з позначкою
Content-Type: application/json. - Використовуйте справжній парсер, перевіряйте вхідні дані й читайте JSON за допомогою інструментів на кшталт
jq.
Читайте також: що таке API, що таке вебхук і чому формати файлів важливі.