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

Вставте YAML (маніфести Kubernetes, Docker Compose, конфіги CI) і миттєво отримайте чистий JSON. Помилки показують точний рядок із вказівником.

Працює в браузеріБез реєстраціїНічого не завантажується

Результат JSON

Як користуватися: YAML у JSON

  1. Вставте YAML у ліве поле або відкрийте файл .yaml/.yml.
  2. JSON з'являється праворуч під час введення. Виберіть для результату 2 пробіли, 4 пробіли або табуляцію.
  3. Позначте Сортувати ключі, щоб упорядкувати ключі за абеткою. Це допомагає під час порівняння конфігів.
  4. Якщо YAML некоректний, рядок стану покаже рядок і стовпець, а проблемні рядки з'являться нижче з маркером ^.
  5. Скопіюйте чи завантажте JSON або натисніть Поміняти, щоб конвертувати його назад у YAML.

Як YAML відображається в JSON

JSON — підмножина YAML 1.2, тому кожне відображення (mapping) YAML стає об'єктом JSON, кожна послідовність — масивом, а скаляри — рядками, числами, логічними значеннями або null. Можливості, що існують лише в YAML, розв'язуються під час конвертації:

  • Коментарі (# …) видаляються, бо в JSON немає коментарів.
  • Якорі й псевдоніми (&base, *base, <<: *base) розгортаються в повні копії.
  • Мітки часу на кшталт 2024-01-02 стають рядками ISO 8601.
  • Багаторядкові рядки (блоки | literal і > folded) стають звичайними рядками з екрануванням \n.

YAML із кількох документів

Один файл може містити кілька YAML-документів, розділених ---, як заведено в маніфестах Kubernetes. У JSON відповідника немає, тому конвертер повертає JSON-масив з одним елементом на документ і повідомляє про це в рядку стану. Одиночний --- у кінці ігнорується.

Підступи YAML 1.1 і 1.2

Цей конвертер дотримується YAML 1.2, актуальної специфікації. Багато старих інструментів (PyYAML, Psych у Ruby, деякі версії Kubernetes і Ansible) досі читають YAML 1.1, де правила інші:

  • Проблема Норвегії: у YAML 1.1 country: no означає false, і код країни Норвегії NO зникає. Те саме стосується yes, on, off, y і n. У YAML 1.2 логічними значеннями вважаються лише true і false.
  • Вісімкові числа: 0755 — вісімкове в 1.1, але звичайне десяткове в 1.2, де використовується 0o755. Для надійності беріть права доступу до файлів у лапки.
  • Шістдесяткові числа: в 1.1 22:30 може розібратися як число 1350. Беріть у лапки час і мапінги портів на кшталт "8080:80".

Під час конвертації JSON → YAML неоднозначні рядки ('no', 'on', 'y') автоматично беруться в лапки, тому отриманий YAML читається однаково в обох версіях.

Поширені запитання

Чи завантажується мій YAML кудись?
Ні. Розбір виконується в браузері open-source бібліотекою js-yaml. Конфіги із секретами чи внутрішніми іменами хостів не залишають ваш комп'ютер.
Чому мій YAML падає з помилкою «bad indentation»?
Вкладеність у YAML задається пробілами, а табуляція для відступів заборонена. Переконайтеся, що ключі одного рівня вирівняно точно, а елементи списку (-) послідовно зміщено під батьківським ключем.
Що відбувається з коментарями YAML?
Вони видаляються. У JSON немає синтаксису коментарів, тому перенести їх неможливо. Зворотна конвертація в YAML їх не відновить.
Чому <code>no</code> залишилося рядком?
Інструмент дотримується YAML 1.2, де логічними значеннями є лише true/false. Старі парсери YAML 1.1 перетворили б no, yes, on і off на логічні значення («проблема Норвегії»).
Чи можна конвертувати маніфест Kubernetes із кількома ресурсами?
Так. Кожен ресурс, відокремлений ---, стає елементом результуючого JSON-масиву, готового для jq або kubectl apply -f -, який теж приймає списки JSON.

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