← Усі інструменти

Конвертер JSON у YAML

Конвертуйте JSON у YAML і навпаки миттєво у браузері. Локально та конфіденційно — з поясненням коментарів, типів, відступів та якорів YAML.

Конвертуйте JSON у YAML та YAML у JSON прямо у браузері

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

Абстрактні фігурні дужки зі світла, що перетворюються на чисті шари конфігурації з відступами на темно-індиговому тлі
Структура JSON розгортається у YAML на основі відступів.

Що таке 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 вимагає пробілів для відступів і відхиляє табуляцію. Якщо вставка не парситься, замініть символи табуляції на пробіли та зробіть відступи послідовними.