CodeKitHub
Інструменти JSON

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

Останнє оновлення:

Щоб конвертувати JSON у YAML, об'єкти стають блоками key: value з відступами, а масиви — елементами списку з префіксом `-` — зворотна конвертація перетворює скорочення типів YAML, такі як незакавичені true, null чи числа, назад у правильні типи JSON. Цей інструмент виконує цю конвертацію в обох напрямках, повністю у вашому браузері.

Що це за інструмент?

YAML — формат вибору для більшості сучасних конфігураційних файлів — маніфестів Kubernetes, Docker Compose, конвеєрів GitHub Actions і GitLab CI, playbook-ів Ansible — тому що він читабельніший за JSON для людей, які редагують файли вручну: не потрібні лапки навколо більшості ключів, немає зайвих ком у кінці, і підтримуються коментарі. JSON, тим часом, це те, що більшість API та мов програмування нативно виробляють і споживають.

Цей інструмент поєднує обидва формати за допомогою js-yaml, широко використовуваної реалізації специфікації YAML на JavaScript, тож розбір і генерація дотримуються тих самих правил, що застосував би інструмент, обізнаний з YAML, на кшталт `kubectl` чи виконавця CI.

Конвертація JSON у YAML перетворює об'єкти на блоки key: value з відступами, а масиви — на елементи списку з префіксом `-`. Конвертація YAML у JSON робить зворотне, а також перетворює специфічні для YAML скорочення типів (наприклад, незакавичені `true`, `null` чи числа) у їхні правильні типи JSON.

Навіщо його використовувати?

  • Двонаправлено — конвертуйте JSON у YAML чи YAML у JSON з того самого екрана.
  • Розбір і генерація на основі стандартів через js-yaml, тож результат відповідає тому, що очікують реальні інструменти YAML (Kubernetes, системи CI, Ansible).
  • Обробляє вкладені об'єкти та масиви на будь-якій глибині, конвертуючи між структурою YAML на основі відступів і фігурними/квадратними дужками JSON.
  • Правильно інтерпретує скорочення типів YAML — незакавичені true/false, null і числові значення стають своїми правильними типами JSON, а не рядками.
  • Копіювання в буфер обміну чи завантаження як файлу .json чи .yaml.
  • 100% на боці клієнта — те, що ви вставляєте, нікуди не завантажується.

Як користуватися

  1. Оберіть напрямок: "JSON → YAML" чи "YAML → JSON".
  2. Вставте свої дані в поле вводу.
  3. Натисніть "Конвертувати".
  4. Перегляньте результат, потім скопіюйте його або натисніть "Завантажити", щоб зберегти файл.

Приклад

Введення

{"name":"Alice","roles":["admin","editor"],"active":true}

Результат

name: Alice
roles:
  - admin
  - editor
active: true

Зверніть увагу, як масив стає списком елементів із рискою під "roles", а булеве значення залишається незакавиченим true, а не стає рядком "true".

Практичні поради

  • Написання маніфесту Kubernetes чи робочого процесу GitHub Actions: спочатку накидайте структуру як JSON (багато редакторів та інструментів ШІ генерують JSON надійніше), потім конвертуйте у YAML для фінального файлу.
  • Налагодження конфігурації YAML, яка неправильно поводиться: конвертуйте її в JSON, щоб точно побачити, які значення є рядками, числами чи булевими — гнучкий синтаксис YAML може приховувати невідповідності типів, які очевидні в JSON.
  • Якщо ваш JSON містить ключі зі спеціальними символами чи такі, що починаються з числа, js-yaml автоматично закавичить їх у виводі YAML, щоб вони правильно розбиралися назад.

Чому приведення типів — найскладніша частина YAML

Найбільша перевага зручності YAML над JSON — відсутність необхідності в лапках навколо більшості значень — водночас є найбільшим джерелом тонких помилок. Класичний приклад — "проблема Норвегії": у YAML 1.1 (яку використовують багато старіших парсерів) незакавичене значення `no` інтерпретується як булеве `false`, а не рядок "no", що зламало реальні конфігурації з кодами країн, у яких вказана Норвегія. Цей інструмент дотримується специфікації YAML 1.2, яка звузила набір незакавичених значень, що трактуються як булеві, лише до `true` і `false` (та їхніх варіантів регістру), зменшуючи — хоча й не усуваючи повністю — цей клас несподіванок. Коли є сумніви щодо того, як буде типізовано значення, найбезпечніший вибір — явно закавичити його у вашому YAML.

Часті запитання

Чи зберігаються коментарі YAML при конвертації в JSON і назад?

Ні. У JSON немає поняття коментарів, тож конвертація YAML у JSON відкидає будь-які коментарі # у джерелі. Якщо ви конвертуєте цей JSON назад у YAML, коментарі не з'являться знову — це властиве обмеження формату, а не помилка інструмента.

Як інструмент обробляє якорі та псевдоніми YAML (& і *)?

Базовий парсер (js-yaml) розв'язує якорі та псевдоніми перед створенням JSON, тож файл YAML, що використовує якорі & і псевдоніми * для повторного використання блоку даних, конвертується в JSON із повністю розгорнутими даними в кожному місці, де на них є посилання.

Чому моє число YAML перетворилося на рядок у JSON, чи навпаки?

Якщо значення закавичене в джерелі YAML (наприклад, version: "3.10"), воно навмисно розглядається як рядок — це важливо, тому що незакавичені числа YAML на кшталт 3.10 можуть втратити кінцевий нуль при розборі як число з плаваючою комою. Закавичте значення в початковому YAML, якщо вам конкретно потрібно, щоб воно оброблялося як текст.

Чи можу я конвертувати файл YAML з кількома документами (розділеними ---)?

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

Чи завантажуються мої дані кудись?

Ні. Конвертація виконується повністю у вашому браузері через бібліотеку js-yaml — нічого не надсилається на сервер, що робить безпечним використання з реальними конфігураційними файлами, включно з тими, що містять внутрішні імена хостів чи деталі інфраструктури.

Схожі інструменти