Що таке JSON: синтаксис, типи даних і поширені помилки

JSON простими словами: синтаксис, шість типів даних, чому його використовують API, помилки, що його ламають, і як швидко читати та перевіряти JSON.

Ілюстрація до статті: Що таке 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, що таке вебхук і чому формати файлів важливі.