← Все гайды

Проверка YAML онлайн: отступы, дубли ключей, якоря

· 2 мин чтения

YAML

Как проверить синтаксис YAML и найти ошибку отступа: подсветка в строках, дерево документа с якорями и ссылками, повторяющиеся ключи.

В YAML структура задаётся отступами, поэтому одна лишняя пробельная позиция меняет смысл документа или ломает его. Редактор YAML проверяет синтаксис по мере ввода и показывает, как документ будет прочитан.

Как проверить YAML

  1. Откройте песочницу YAML и вставьте документ (или откройте файл).
  2. Ошибки подсвечиваются в строках; список с номерами строк — под редактором.
  3. Справа на вкладке Дерево видно, как документ прочитан: если ключ оказался не на том уровне, это сразу заметно.
Дерево YAML-документа с якорями
Дерево показывает вложенность, якоря & и ссылки *

Что проверяется

  • Отступы и структура: смешение уровней, табуляция вместо пробелов.
  • Повторяющиеся ключи в одном объекте — ошибка, хотя многие парсеры молча оставляют последнее значение. Именно такие дубли в конфигурациях потом ищут часами.
  • Якоря и ссылки: ссылка *имя на несуществующий якорь — ошибка. Ctrl+клик по ссылке переходит к якорю &имя.
  • Несколько документов через --- проверяются все.

Неочевидные ловушки YAML

  • version: 1.10 — число 1.1, а не строка «1.10». Номера версий берите в кавычки.
  • country: NO: редактор следует YAML 1.2 и читает это как строку, но парсеры YAML 1.1 (PyYAML, старые версии SnakeYAML) — как false. Та же история с yes/on/off.
  • time: 12:30 в YAML 1.1 — число в шестидесятеричной системе (750). Время и подобные значения надёжнее писать в кавычках.
  • Двоеточие с пробелом внутри значения требует кавычек.

Вкладка JSON помогает увидеть фактический тип значения: там строки в кавычках, а числа и логические значения — без.

Проверка по схеме

Синтаксически верный YAML может не подходить системе. Если у вас есть JSON Schema (например, для конфигурации CI или Kubernetes-манифеста), проверьте документ на вкладке Проверка по схеме — см. «Проверка YAML по JSON Schema».

Пример

server:
  port: 8080
  host: 0.0.0.0
   timeout: 30s
database:
  url: postgres://db/app
  url: postgres://db2/app

Две проблемы: timeout сдвинут на один пробел (ошибка отступа) и url повторяется (дубликат ключа). Обе будут подсвечены в строках.

Вопросы и ответы

Как проверить манифест Kubernetes или docker-compose? Синтаксис проверится здесь же. Структуру (правильные ли ключи и значения) — по JSON Schema формата: «Проверка YAML по JSON Schema».

Можно ли открыть файл с несколькими документами? Да, документы, разделённые ---, проверяются все; ошибка в любом из них подсветится в своей строке.

Как поменять табуляцию на пробелы? Откройте панель поиска (Ctrl+F, на macOS — Cmd+F), включите «регулярное выражение», найдите \t и замените на два пробела.