Utilia

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

Конвертирайте JSON в YAML и YAML в JSON във вашия браузър, с котви, merge ключове и файлове с много документи. Нищо не се качва.

Конвертиране

Как да използвате конвертора от 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) се разгръщат, а merge ключовете (<<: *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", се поставят първи, във възходящ ред.