Не вставляйте боевые .env с паролями и токенами: файл уходит на сервер для разбора.
YAML умеет то, чего нет в JSON: комментарии через #, ссылки-якоря
(&имя … *имя) на повторяющиеся блоки конфигурации и
многострочные текстовые литералы (| — с сохранением переносов строк,
> — со сворачиванием их в пробелы). JSON ничего из этого не поддерживает,
поэтому при переводе YAML → JSON комментарии и якоря теряются безвозвратно: разворачивать
ссылку в дублирующийся текст конвертер не станет молча, а объекта для комментария в JSON
попросту нет.
В YAML отступ — не оформление, а синтаксис: именно им задаётся вложенность объектов и списков, и табуляции YAML не допускает вовсе (спецификация запрещает их в отступах явно). Два пробела — соглашение, вокруг которого сложилась экосистема: Kubernetes, Ansible, GitHub Actions, docker-compose. Конвертер держится того же шага, чтобы результат без правок вставлялся в такие файлы.
Есть и обратная сторона: блочный стиль сохраняется только до четырёх уровней вложенности —
глубже YAML сворачивает вложенные объекты в компактную потоковую запись вида
{ a: { b: 1 } }. Это валидный YAML, и он вставится без ошибок, но выглядит
непривычно, если вы ждали блочный формат на всех уровнях.
Литературный блок YAML (| или >) на выходе в JSON становится
обычной строкой с символами \n внутри: JSON не различает, каким блочным
стилем строка была записана в источнике, — только итоговое содержимое. При переводе
JSON → YAML такая строка с переносами автоматически снова превращается в блочный литерал
|, а не остаётся одной длинной строкой в кавычках.
YAML умеет то, чего нет в JSON: комментарии через #, ссылки-якоря (&имя … *имя) на повторяющиеся блоки и многострочные текстовые литералы (| и >). При переводе YAML → JSON комментарии и якоря теряются безвозвратно — JSON для них просто не предусматривает места.
Отступ в YAML задаёт вложенность, поэтому его размер важен для читаемости и для совместимости с инструментами экосистемы (Kubernetes, Ansible, GitHub Actions), которые сложились вокруг двух пробелов. Табуляции YAML не допускает вовсе.
Многострочный литературный блок (| — с сохранением переносов, > — со сворачиванием их в пробелы) на выходе в JSON становится обычной строкой с символами внутри: JSON не различает, каким блочным стилем строка была записана в источнике, только итоговое содержимое.
JSON ⟷ PHP-массив, универсальный конвертер конфигов (JSON, YAML, .env, PHP-массив, XML, CSV), CSV ⟷ JSON, JSON ⟷ XML, а также остальные инструменты.
Опишите задачу — отвечу и предложу формат работы.
Обсудить задачу