Оба формата удобны для чтения, но YAML зависит от отступов и неявных преобразований, а TOML использует явные типы и секции. Выбирайте формат по требованиям инструмента и безопасности редактирования.
YAML представляет отображения, последовательности и скаляры. В обычном блочном стиле иерархию задают отступы. Kubernetes и Docker Compose используют его для конфигурации. Делайте отступы пробелами, не табуляцией; два пробела на уровень — соглашение, а нужную глубину определяет структура.
В key: value двоеточие с пробелом разделяет ключ и значение. key:value может читаться как строка. Используйте кавычки, если нужно избежать специальной трактовки символов, чисел или логических значений.
YAML 1.1 считает yes, no, on и off логическими значениями; YAML 1.2 и конкретные парсеры могут отличаться. --- разделяет документы, например ресурсы Kubernetes. Проверяйте файл в форматировщике YAML, затем в целевой системе.
Невидимая табуляция и неверное выравнивание элементов могут вызвать ошибку или изменить структуру. Включите отображение пробелов в редакторе. Разная глубина сама по себе не запрещена: важно соответствие нужной иерархии.
Неявные типы зависят от версии и схемы. Ведущие нули опасны: 0644 по правилам YAML 1.1 может читаться как восьмеричное число. Заключайте идентификаторы и версии в кавычки, если они должны оставаться текстом; не полагайтесь на поведение другого парсера.
Якоря &name и псевдонимы *name повторно используют значения, но поддержка зависит от системы. Проверяйте развёрнутый результат через YAML в JSON. JSON не сохраняет комментарии и синтаксис псевдонимов, поэтому часть исходного представления теряется.
TOML создан для конфигурации, редактируемой людьми. Он использует пары ключ-значение и секции [package], [dependencies], [dev-dependencies]. Примеры — Cargo и pyproject.toml; PEP 518 выбрал TOML в 2016 году для требований сборки Python.
[[table]] начинает элемент массива таблиц. Строки, целые, числа с плавающей точкой, логические значения, даты, время, массивы и встроенные таблицы имеют определённый синтаксис. port = 8080 — число, port = "8080" — текст. Типа null нет.
Комментарии начинаются с # вне строк. Проверяйте версию и возможности парсера, особенно многострочные строки и даты. Форматировщик TOML помогает проверить файл, но его должна принять и целевая программа.
Используйте YAML, когда этого требует платформа: Kubernetes, Helm или Ansible. Комментарии и псевдонимы удобны, но требуют проверки типов и структуры. TOML подходит для упорядоченной конфигурации, которую часто редактируют люди.
JSON имеет строгие правила и широкую поддержку в API и package.json. Стандарт не допускает комментарии; поддержка JSON с комментариями отдельным приложением не меняет спецификацию.
JSON в YAML, JSON в TOML, YAML в JSON и TOML в JSON работают локально. Проверьте null, даты, числа и вложенные массивы. Комментарии, форматирование и специальная информация о типах не сохраняются автоматически.
Самая частая причина — отступы табуляцией вместо пробелов. Некоторые редакторы незаметно вставляют табуляции. Прогоните ваш YAML через наш YAML Formatter, чтобы нормализовать пробелы перед коммитом.
Да. Символ #, трактуемый как комментарий вне строки, исключает оставшуюся часть строки. Внутри строкового значения # является частью данных и должен сохраняться.
TOML 1.0 вышел в 2021 году и уточнил синтаксис, многострочные строки, ключи и даты. Проверьте версию и возможности парсера и загрузите файл в целевую программу для проверки.
Используйте наш YAML to JSON Converter. Вставьте ваш манифест и нажмите Convert. Вывод — это валидный JSON, который принимают kubectl и большинство клиентов Kubernetes.
Сообщество упаковки Python выбрало TOML, потому что он поддерживает комментарии (в отличие от JSON), однозначен (в отличие от неявных типов YAML) и удобен для человека. PEP 518 (2016) указал TOML для этой цели.