Utilia

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

Конвертуйте JSON у YAML і YAML у JSON у браузері: з якорями, ключами злиття та файлами з кількома документами. Нічого не завантажується на сервер.

Напрям конвертації

Як користуватися конвертером JSON у YAML

  1. Виберіть напрям: JSON → YAML або YAML → JSON.
  2. Вставте дані або натисніть Відкрити файл, щоб завантажити файл .json, .yaml чи .yml (до 10 МБ).
  3. Виберіть Відступ (2 або 4 пробіли) і, за бажання, Сортувати ключі за алфавітом.
  4. Натисніть Конвертувати або просто продовжуйте вводити: результат оновлюється автоматично. Якщо вхідні дані некоректні, повідомлення про помилку вказує рядок і стовпець проблеми.
  5. Скопіюйте або завантажте результат. Кнопка Змінити напрям надсилає результат назад у поле введення, щоб конвертувати його в інший бік.

JSON і YAML: ті самі дані, інший синтаксис

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

Ті самі дані в обох форматах:

{"name": "web", "ports": [80, 443], "env": {"DEBUG": false}}
name: web
ports:
  - 80
  - 443
env:
  DEBUG: false

JSON → YAML

Конвертер записує YAML у блочному стилі: один ключ на рядок, списки з дефісами та вкладені об’єкти з відступами. Довгі рядки ніколи не згортаються, а багаторядкові рядки використовують буквальний стиль |, щоб переноси рядків зберігалися точно. Рядки, які YAML інакше прочитав би як інший тип, беруться в лапки: "yes", "1.0" чи "null" залишаються рядками після перетворення туди й назад. Сортувати ключі впорядковує ключі кожного об’єкта за алфавітом, що полегшує порівняння двох файлів конфігурації.

YAML → JSON

YAML читається за основною схемою YAML 1.2 – за тими самими правилами, що й у більшості сучасних інструментів:

  • true/false, числа й null (або ~) стають значеннями JSON; yes, no, on та off залишаються рядками, як вимагає специфікація YAML 1.2.
  • Якорі й псевдоніми (&base, *base) розгортаються, а ключі злиття (<<: *base), поширені у файлах CI, підтримуються.
  • Файл із кількома документами, розділеними ---, стає масивом JSON з одним елементом на документ, а повідомлення вказує, скільки документів об’єднано.
  • Коментарі відкидаються, бо в JSON їх немає.
  • .inf і .nan не мають еквівалентів у JSON; вони записуються як рядки "Infinity" та "NaN".

Щоб захистити ваш браузер від файлів «мільярда сміхів», у яких кілька псевдонімів розгортаються в мільярди значень, документ, що розгортається більш ніж у мільйон значень, відхиляється.

Поширені помилки в YAML

  • Табуляції для відступів: YAML дозволяє лише пробіли.
  • Непослідовні відступи: елементи одного списку чи об’єкта мають починатися в тому самому стовпці.
  • Немає пробілу після двокрапки: key:value – це один рядок, а key: value – пара «ключ–значення».
  • Спеціальні символи без лапок: значення, що починається з @, зворотної лапки, *, & чи ! або містить : чи #, потрібно брати в лапки.

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

Чи надсилається мій файл на сервер?

Ні. Конвертація виконується у вашому браузері, а ваші файли конфігурації, секрети чи дані API ніколи не залишають ваш комп’ютер.

Чому «yes» і «no» не перетворюються на логічні значення?

Починаючи з YAML 1.2, логічними значеннями є лише true і false. Старіші аналізатори YAML 1.1 вважали логічними yes, no, on та off, що спричинило відому «проблему Норвегії» (код країни NO читався як false). Цей інструмент дотримується YAML 1.2.

Чи зберігаються коментарі YAML?

Ні. У JSON коментарів немає, тому під час YAML → JSON вони втрачаються. Під час JSON → YAML ви можете додати коментарі до результату вже потім.

Чи можна конвертувати файл Kubernetes із кількома ресурсами?

Так. Кожен ресурс, відокремлений ---, стає одним елементом масиву JSON. Конвертація цього масиву назад у YAML дає один документ зі списком.

Чи змінює конвертер порядок ключів?

Ні, якщо ви не позначите Сортувати ключі: ключі зберігають порядок, у якому вони з’являються у ваших даних. Єдиний виняток походить із самого JavaScript: ключі, що є цілими числами, як-от "10" чи "2", розміщуються першими за зростанням.