JSON чи YAML
Головне: JSON розмежовує дужками, а YAML — відступами: машинам JSON, людям, що редагують конфігурацію, — YAML. Коментарі, якорі та структура кількох документів не виживають.

Коротко: використовуйте JSON для даних «машина-до-машини» й YAML для конфігурації, яку редагують люди; надавайте перевагу YAML, коли потрібні коментарі, багаторядковий текст чи якорі, і JSON, коли кожна мова мусить розібрати те саме навантаження без двозначності.
Пліч-о-пліч
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
Та сама структура. YAML відкидає пунктуацію й отримує місце для коментаря.
Де вони різняться
| JSON | YAML | |
|---|---|---|
| Структура | Дужки й коми | Відступи |
| Коментарі | Немає | Є |
| Рядки | Подвійні лапки, потрібне екранування | Зазвичай голі |
| Багаторядковий текст | escape \n або масиви |
блокові скаляри ` |
| Повторне використання | Немає | Якорі & і псевдоніми * |
| Кілька документів | Обгорнути в масив | Розділювачі --- |
| Швидкість розбору | Швидка | Повільніша, правила відступів |
| Двозначність | Дуже низька | no розбирається як булеве, відступ на одиницю |
Останній рядок — справжня ціна YAML. У YAML 1.1 country: NO дає булеве false, а version: 1.0 може стати дробовим. У JSON неявного типізування немає взагалі.
Вибір
JSON: тіла запитів і відповідей, повідомлення сервіс-до-сервісу, JSON-стовпці в базах даних, усе, що мусить розбиратися ідентично в кожній мові.
YAML: екосистеми, де він типовий (Kubernetes, Ansible, GitHub Actions, Docker Compose); конфігурація, що потребує пояснень; файли, де домінує довгий текст, як-от сертифікати, скрипти чи SQL.
Що втрачає конвертація
YAML → JSON: усі коментарі, повторне використання якорів (розкрите в дублікати), усі документи, крім першого, і оригінальне написання дат і булевих значень.
JSON → YAML: розрізнення рядка й числа слабшає, тож "8080" і 8080 обидва потребують явних лапок, щоб лишатися безпечними.
Конвертуйте для міграцій і одноразового огляду. Не підтримуйте той самий файл у двох форматах як паралельні подання.
Часті питання
Як вирішити між JSON і YAML?
Почніть із того, хто читає й підтримує файл: використовуйте JSON, коли програма його генерує, він перетинає межі мов і мусить розбиратися передбачувано; використовуйте YAML, коли людина редагує його й потребує пояснень полів або довгого багаторядкового тексту. Вони конвертуються один в одного, але не підтримуйте ту саму конфігурацію в обох форматах довгостроково.
Чому YAML дає більше типової двозначності?
YAML має неявне типізування, тож значення на кшталт NO, on чи 1.0 можуть стати булевими, датами чи числами. У JSON лише явні типи: рядок мусить бути в лапках, що робить розбір передбачуванішим між мовами.
Чи мають коментарі й якорі виживати під час конвертації YAML у JSON?
Ні. Коментарі, якорі й кілька документів YAML не можна подати в JSON; якорі розкриваються в дубльований вміст. Якщо їх треба зберегти, використовуйте бібліотеку YAML з Document API замість циклу через обʼєкт.