Конвертуйте JSON у YAML та YAML у JSON прямо у браузері
JSON та YAML описують однаковий тип даних — вкладені словники, списки, рядки, числа та булеві значення — але виглядають дуже по-різному та використовуються в різних місцях. Якщо ви хоч якось пов'язані з API, конфігураційними файлами чи CI-пайплайнами, рано чи пізно вам знадобиться перетворити один формат на інший. Ця сторінка виконує конвертацію в обох напрямках — повністю у вашому браузері, тому дані, які ви вставляєте, ніколи не покидають вашу машину.

Що таке JSON та де він живе
JSON (JavaScript Object Notation) — суворий формат із дужками та фігурними скобками, побудований передусім для машин. Кожен об'єкт огортається у {}, кожен масив у [], ключі та рядкові значення беруться у подвійні лапки, а елементи розділяються комами. Це формат за замовчуванням для REST та GraphQL API, тіло більшості вебхуків, форма NoSQL-документів і те, що повертає ваш fetch-запит. Майже кожна мова парсить його «з коробки» — саме тому він завоював API-рівень: JSON.parse у JavaScript, модуль json у стандартній бібліотеці Python та аналоги скрізь. Компроміс: JSON багатослівний при написанні вручну і не підтримує коментарів — тому поганий для файлів, які людина редагує щодня.
Що таке YAML та де він живе
YAML (YAML Ain't Markup Language) розроблявся із протилежним пріоритетом: насамперед для людей. Він позбавляється дужок і лапок, використовує відступи для вираження вкладеності та дозволяє писати коментарі з #. Саме ця читабельність зробила його лінгва-франка конфігурації. Файли Docker Compose, маніфести Kubernetes, пайплайни GitHub Actions та GitLab CI, плейбуки Ansible та незліченні конфігураційні файли застосунків — усе це YAML. Типовий YAML-документ помітно коротший за еквівалентний JSON і набагато зручніший для порівняння в pull request. Ціна тієї елегантності — крихкість, де й починається цікаве при конвертації.
Ключові відмінності, що важливі для конвертації
Три відмінності визначають майже кожне рішення при конвертації. По-перше, пробіли в YAML значущі, а в JSON — ні. YAML використовує пробіли — ніколи табуляцію — для позначення структури, тому один неправильно вирівняний пробіл може мовчки змінити зміст документа. JSON взагалі не зважає на відступи. По-друге, YAML підтримує коментарі, JSON — ні. Будь-який коментар # у YAML просто зникає при перетворенні на JSON, бо йому нема де розміститися. По-третє, YAML має багатші неявні типи. Він охоче читає дати, мітки часу та null у кількох варіантах написання, а типи вгадує з неквотованих значень. JSON має невеликий явний набір типів і не допускає неоднозначності. Зауважте також, що JSON технічно є підмножиною YAML 1.2 — тому валідний JSON зазвичай чисто парситься як YAML, але зворотне не гарантується.

Підводні камені конвертації
Туди-назад — не завжди без втрат, і варто знати де що ламається:
- Проблема Норвегії. За правилами YAML 1.1 неквотоване
NOпарситься як булевеfalse, аyes,onтаoffтеж стають булевими. Код країни або назва перемикача можуть перетворитися наtrue/falseдо того, як ви це помітите. Беріть значення, що мають бути рядками, у лапки. - Перетворення чисел. Версія на зразок
3.10може втратити хвостовий нуль і стати3.1, а1.0стає числом, навіть якщо ви хотіли рядок. Беріть рядки версій та ідентифікатори у лапки. - Якорі та псевдоніми зникають. Посилання
&anchorта*aliasу YAML не мають еквівалента в JSON. Хороший конвертер розгортає їх у повне значення, тому дані коректні, але дедублікація зникає — перетворення JSON у YAML і назад не відновить оригінальні якорі. - Коментарі та блокові скалари. Коментарі відкидаються при переході до JSON. Багаторядкові блокові скалари (
|та>) стискаються до звичайних JSON-рядків з екранованим\n, тому візуальний задум форматування втрачається. - Відступи при поверненні до YAML. JSON не кодує відступи, тому конвертер вибирає послідовний стиль. Перевіряйте його перед вставкою в інструменти, чутливі до відступів.
Чому важлива виключно локальна робота
Конфігураційні файли та API-пейлоади — саме той тип даних, що не варто завантажувати на сторонній сервер: вони часто містять імена хостів, токени, внутрішні назви сервісів або дані клієнтів. Цей конвертер виконує крок парсингу та виводу у вашому браузері за допомогою JavaScript. Нічого не надсилається на бекенд, нічого не журналюється, і інструмент працює офлайн після завантаження сторінки. Вставляйте секрети Kubernetes або CI-пайплайн із впевненістю, що все залишається на вашій машині.
Потрібні суміжні інструменти? Перегляньте повний набір конвертерів даних, приберіть брудні дані за допомогою форматувальника JSON та повертайтеся сюди, коли потрібно перейти між світом API та світом конфігурацій.
Часті запитання
Чи завантажуються мої дані кудись?
Ні. Конвертація відбувається повністю у вашому браузері за допомогою локального JavaScript. Ваш JSON або YAML ніколи не надсилається на сервер, тому секрети та конфігураційні файли залишаються приватними.
Чому моє YAML-значення true або false несподівано змінилося?
YAML 1.1 трактує неквотовані слова yes, no, on та off як булеві — це проблема Норвегії. Беріть будь-яке значення, що має бути рядком, у лапки, щоб воно зберіглося як текст при конвертації.
Що трапляється з моїми коментарями при конвертації YAML у JSON?
У JSON немає синтаксису коментарів, тому всі коментарі з символом # видаляються при конвертації. Якщо потрібно зберегти нотатки, тримайте авторитетну копію у YAML.
Чи зберігаються якорі та псевдоніми YAML?
Вони розгортаються у повні значення, бо в JSON немає механізму посилань. Дані залишаються коректними, але дедублікацію неможливо відновити при поверненні до YAML.
Чи можна конвертувати JSON у YAML, а також YAML у JSON?
Так, інструмент працює в обох напрямках. Вставте JSON — отримаєте YAML, або вставте YAML — отримаєте JSON; конвертер сам визначає і видає інший формат.
Чому YAML ламається, якщо я використовую табуляцію?
YAML вимагає пробілів для відступів і відхиляє табуляцію. Якщо вставка не парситься, замініть символи табуляції на пробіли та зробіть відступи послідовними.
