Polnoye rukovodstvo po YAML & TOML

Бесплатно Kubernetes · Docker · Rust · Python · GitHub Actions Без регистрации · Данные не сохраняются · Работа офлайн после загрузки

Instrumenty v etom rukovodstve

Форматтер YAML
Форматировать
YAML → JSON
В JSON
Форматтер TOML
Форматировать
TOML → JSON
В JSON
JSON → YAML
В YAML
JSON → TOML
В TOML
Генератор Cron
Создать Cron
Тестер регулярных выражений
Проверить шаблоны
Последнее обновление: 28 сентября 2026  ·  v1.0
Краткий ответ
Чем отличаются YAML и TOML?

Оба формата удобны для чтения, но YAML зависит от отступов и неявных преобразований, а TOML использует явные типы и секции. Выбирайте формат по требованиям инструмента и безопасности редактирования.

Правила YAML для Kubernetes

YAML представляет отображения, последовательности и скаляры. В обычном блочном стиле иерархию задают отступы. Kubernetes и Docker Compose используют его для конфигурации. Делайте отступы пробелами, не табуляцией; два пробела на уровень — соглашение, а нужную глубину определяет структура.

В key: value двоеточие с пробелом разделяет ключ и значение. key:value может читаться как строка. Используйте кавычки, если нужно избежать специальной трактовки символов, чисел или логических значений.

YAML 1.1 считает yes, no, on и off логическими значениями; YAML 1.2 и конкретные парсеры могут отличаться. --- разделяет документы, например ресурсы Kubernetes. Проверяйте файл в форматировщике YAML, затем в целевой системе.

Как избегать ошибок YAML

Невидимая табуляция и неверное выравнивание элементов могут вызвать ошибку или изменить структуру. Включите отображение пробелов в редакторе. Разная глубина сама по себе не запрещена: важно соответствие нужной иерархии.

Неявные типы зависят от версии и схемы. Ведущие нули опасны: 0644 по правилам YAML 1.1 может читаться как восьмеричное число. Заключайте идентификаторы и версии в кавычки, если они должны оставаться текстом; не полагайтесь на поведение другого парсера.

Якоря &name и псевдонимы *name повторно используют значения, но поддержка зависит от системы. Проверяйте развёрнутый результат через YAML в JSON. JSON не сохраняет комментарии и синтаксис псевдонимов, поэтому часть исходного представления теряется.

Структура TOML

TOML создан для конфигурации, редактируемой людьми. Он использует пары ключ-значение и секции [package], [dependencies], [dev-dependencies]. Примеры — Cargo и pyproject.toml; PEP 518 выбрал TOML в 2016 году для требований сборки Python.

[[table]] начинает элемент массива таблиц. Строки, целые, числа с плавающей точкой, логические значения, даты, время, массивы и встроенные таблицы имеют определённый синтаксис. port = 8080 — число, port = "8080" — текст. Типа null нет.

Комментарии начинаются с # вне строк. Проверяйте версию и возможности парсера, особенно многострочные строки и даты. Форматировщик TOML помогает проверить файл, но его должна принять и целевая программа.

Выбор YAML, TOML или JSON

Используйте YAML, когда этого требует платформа: Kubernetes, Helm или Ansible. Комментарии и псевдонимы удобны, но требуют проверки типов и структуры. TOML подходит для упорядоченной конфигурации, которую часто редактируют люди.

JSON имеет строгие правила и широкую поддержку в API и package.json. Стандарт не допускает комментарии; поддержка JSON с комментариями отдельным приложением не меняет спецификацию.

JSON в YAML, JSON в TOML, YAML в JSON и TOML в JSON работают локально. Проверьте null, даты, числа и вложенные массивы. Комментарии, форматирование и специальная информация о типах не сохраняются автоматически.

Частые вопросы

Почему мой Kubernetes YAML работает локально, но падает в CI?

Самая частая причина — отступы табуляцией вместо пробелов. Некоторые редакторы незаметно вставляют табуляции. Прогоните ваш YAML через наш YAML Formatter, чтобы нормализовать пробелы перед коммитом.

Можно ли добавлять комментарии в YAML?

Да. Символ #, трактуемый как комментарий вне строки, исключает оставшуюся часть строки. Внутри строкового значения # является частью данных и должен сохраняться.

В чём разница между TOML v0.5 и TOML v1.0?

TOML 1.0 вышел в 2021 году и уточнил синтаксис, многострочные строки, ключи и даты. Проверьте версию и возможности парсера и загрузите файл в целевую программу для проверки.

Как преобразовать манифест Kubernetes YAML в JSON?

Используйте наш YAML to JSON Converter. Вставьте ваш манифест и нажмите Convert. Вывод — это валидный JSON, который принимают kubectl и большинство клиентов Kubernetes.

Почему pyproject.toml использует TOML вместо JSON или YAML?

Сообщество упаковки Python выбрало TOML, потому что он поддерживает комментарии (в отличие от JSON), однозначен (в отличие от неявных типов YAML) и удобен для человека. PEP 518 (2016) указал TOML для этой цели.