YAML Formatter: Валидация и форматирование YAML
YAML formatter форматирует, проверяет и конвертирует YAML в JSON в браузере. Настраиваемые отступы, скачивание файлов.
Что такое YAML Formatter?
YAML Formatter — это браузерный инструмент, который парсит, валидирует и ре-сериализует текст YAML с последовательными настраиваемыми отступами. Чувствительный к отступам синтаксис YAML означает, что один неправильно выровненный блок может изменить смысл всего документа или вызвать ошибку, которую сложно найти визуально. Этот инструмент немедленно обнаруживает такие проблемы и производит чистый вывод, соответствующий вашему предпочтительному стилю.
Помимо базового форматирования, инструмент конвертирует YAML напрямую в JSON — полезно, когда API или инструмент требует JSON, но ваша исходная конфигурация находится в YAML, или когда нужно убедиться, что YAML парсится в ожидаемую структуру данных. Обе операции выполняются полностью в браузере с использованием библиотеки js-yaml. Данные не покидают вашу машину, аккаунт не требуется, инструмент бесплатен.
Основные возможности
- Форматирование YAML с правильными отступами — Парсит входные данные с помощью
js-yamlи повторно сериализует с выбранным размером отступа. ОпцияlineWidth: -1предотвращает добавление переносов строк в длинные строки, аnoRefs: trueраскрывает якоря и псевдонимы в их полные значения. - Валидация синтаксиса YAML с сообщениями об ошибках — Если
js-yamlвыбрасывает ошибку парсинга, точное сообщение об ошибке (включая номер строки) появляется ниже панели вывода. Ошибки используют доступный атрибутrole="alert". - Конвертация YAML в JSON — Парсит YAML и сериализует результат как JSON с помощью
JSON.stringifyс выбранными отступами. Логика загрузки определяет, начинается ли вывод с{или[, и автоматически сохраняет файл с расширением.json. - Копирование отформатированного вывода в буфер обмена — Использует Clipboard API с резервным вариантом через textarea.
- Скачивание как файл .yaml или .json — Когда вывод является JSON (из операции конвертации), файл сохраняется как
formatted.json. Когда вывод является YAML (из операции форматирования), сохраняется какformatted.yaml. - Горячие клавиши — Ctrl+Enter (Cmd+Enter) форматирует; Ctrl+Shift+J (Cmd+Shift+J) конвертирует в JSON.
Как использовать YAML Formatter
Шаг 1: Вставьте ваш YAML
Перейдите к инструменту по адресу /developer/code/yaml-formatter. Вставьте ваш YAML в панель ввода слева. Текстовая область является моноширинной и изменяемой по размеру. Принимаются YAML-документы любого размера, помещающегося в память браузера — инструмент не устанавливает ограничений по размеру.
Шаг 2: Выберите отступы
Откройте выпадающий список отступов в панели действий под полями. Выберите 2 пробела или 4 пробела. Выбор влияет как на вывод Format, так и на вывод конвертации в JSON. Отступ в два пробела — это стандарт сообщества YAML, используемый в манифестах Kubernetes, плейбуках Ansible и большинстве файлов пайплайнов CI/CD. Отступ в четыре пробела соответствует некоторым соглашениям проектов Python и Java.
Шаг 3: Форматируйте или конвертируйте
Нажмите Format (или Ctrl+Enter / Cmd+Enter), чтобы получить нормализованный YAML в правой панели. Нажмите To JSON (или Ctrl+Shift+J / Cmd+Shift+J), чтобы получить эквивалентный JSON-документ.
Пример входных данных — манифест Kubernetes Deployment с непоследовательными отступами:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-frontend
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Вывод после Format с отступом в 2 пробела:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-frontend
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Шаг 4: Конвертация в JSON (по желанию)
С тем же YAML во входных данных нажмите To JSON. В панели вывода отобразится эквивалентный JSON-документ:
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "web-frontend",
"labels": {
"app": "web"
}
}
}
(Сокращено для краткости — полный документ включал бы spec)
Шаг 5: Скопируйте или скачайте
Нажмите Copy, чтобы скопировать вывод в буфер обмена. Нажмите Download, чтобы сохранить файл. Инструмент автоматически выбирает .yaml или .json в качестве расширения файла в зависимости от того, похож ли вывод на JSON (начинается с { или [).
Практические примеры
Нормализация файла CI/CD-пайплайна
Файл рабочего процесса GitHub Actions был отредактирован несколькими участниками и имеет смешанные отступы. Вставьте его в форматер, нажмите Format с отступом в 2 пробела, и в выводе будут показаны последовательные отступы. Перед коммитом изменения сравните входные и выходные данные, чтобы убедиться в отсутствии семантических различий — поскольку YAML чувствителен к отступам, переформатирование может выявить ошибки выравнивания, скрытые в исходном файле.
Проверка структуры конфигурации
Вы поддерживаете файл конфигурации для приложения Node.js, которое развёртывается с YAML, но среда выполнения читает его как разобранный объект JavaScript. Вставьте конфигурацию и нажмите To JSON. Вывод JSON покажет, как именно выглядит разобранный объект, включая преобразования типов (голые true/false → булевы, числа без кавычек → числа). Это подтверждает, что такие значения, как port: 8080, будут числом, а не строкой "8080".
Входные данные:
server:
host: 0.0.0.0
port: 8080
debug: false
database:
url: postgres://localhost:5432/myapp
pool: 10
Вывод JSON:
{
"server": {
"host": "0.0.0.0",
"port": 8080,
"debug": false
},
"database": {
"url": "postgres://localhost:5432/myapp",
"pool": 10
}
}
Раскрытие якорей YAML
YAML поддерживает якоря (&) и псевдонимы (*) для повторного использования значений. Форматер использует noRefs: true, что означает раскрытие всех псевдонимов в их полные значения в выводе. Это делает отформатированный документ самодостаточным и более удобным для чтения в инструментах, не поддерживающих якоря.
Советы и рекомендации
Форматер сохраняет порядок ключей. Опции дампа js-yaml включают sortKeys: false, поэтому порядок ваших ключей сохраняется в отформатированном выводе. Это важно для документов Kubernetes и Ansible, где порядок полей имеет конвенциональное значение, даже если технически не обязателен.
Длинные строки не переносятся. Параметр lineWidth: -1 отключает автоматический перенос строк. Многострочные строки и длинные значения останутся на одной строке, а не будут разрываться на произвольном столбце. Если вам нужен вывод с переносами, скопируйте результат и примените переносы в своём редакторе.
Проверяйте перед коммитом в систему контроля версий. Ошибки отступов YAML — распространённая причина сбоев CI. Прогоняйте файл пайплайна через этот форматер перед отправкой. Чистый проход форматирования без сообщений об ошибках подтверждает синтаксическую корректность YAML.
Проверяйте расширение файла при скачивании. Логика загрузки проверяет содержимое вывода, а не выполненную операцию. Если вы отформатировали YAML, и он случайно начинается с { (некоторые файлы YAML используют синтаксис, совместимый с JSON), файл сохранится как .json. При необходимости переименуйте его.
Булевы значения YAML строги. Спецификация YAML распознаёт true, false, yes, no, on и off как булевы значения в YAML 1.1. Библиотека js-yaml по умолчанию следует YAML 1.2, где только true и false являются булевыми. Если ваш YAML использует yes/no, форматер обрабатывает их как обычные строки.
Типичные проблемы и устранение неполадок
Сообщение об ошибке с номером строки и столбца — Ошибки парсинга js-yaml включают точное местоположение проблемы. Посмотрите на указанную строку в ваших входных данных. Типичные причины: использование табуляции вместо пробелов для отступов (YAML не допускает табуляцию), двоеточие внутри строки без кавычек (например, url: http://example.com должно быть url: "http://example.com" или использовать блочный скалар), или неверный уровень вложенности.
В выводе отсутствуют значения, присутствовавшие во входных данных — Если ваш YAML использует теги типов !! (например, !!binary, !!timestamp), которые js-yaml не распознаёт, эти значения могут быть удалены или преобразованы. Проверьте конкретные значения для определения тега типа и при необходимости заключите значение в кавычки.
Ошибка "Please enter YAML to format" — Поле ввода было пустым или содержало только пробелы, когда вы нажали Format или Конвертировать. Сначала вставьте ваш YAML в панель ввода.
В конвертированном JSON неожиданные значения null — Значение YAML ~ или пустое значение (ключ без значения после двоеточия) становится null в JSON. Это корректное поведение, соответствующее спецификации YAML. Заключите значение в кавычки, если вы имели в виду строку "~" или пустую строку "".
Скачивание сохраняется как .json вместо .yaml — Обработчик загрузки проверяет, начинается ли вывод с { или [. Некоторые YAML-документы написаны в YAML-синтаксисе, совместимом с JSON, и начинаются с фигурной скобки. В этом случае переименуйте скачанный файл в .yaml после сохранения.
Конфиденциальность и безопасность
YAML Formatter обрабатывает все входные данные локально в вашем браузере с использованием библиотеки js-yaml. Никакой вставленный текст — включая строки подключения к базам данных, токены API, приватные ключи или личные данные конфигурации — не отправляется на какой-либо сервер. Инструмент функционирует без сетевого подключения после загрузки страницы. Отслеживание сессий для операций форматирования отсутствует.
Часто задаваемые вопросы
YAML Formatter бесплатный? Да, полностью бесплатный без ограничений использования. Все операции форматирования, валидации и конвертации доступны без затрат. Функции поддержки Glyph Widgets — сохранённые пресеты, история сессий, заметки к инструменту — доступны для сторонников Ko-fi, но для основных функций YAML ничего не требуется.
Работает ли офлайн? Да. Все вычисления выполняются в вашем браузере. После загрузки страницы вы можете отключиться от интернета и продолжать использовать форматер и конвертер без перебоев.
Мои данные в безопасности? Да. Ваши входные данные YAML никогда не передаются на сервер. Они существуют только в памяти браузера и удаляются при нажатии Очистить или закрытии вкладки.
Поддерживает ли форматер многодокументные YAML-файлы (несколько секций ---)? Функция load из js-yaml парсит первый документ в потоке. Многодокументные YAML-файлы (разделённые ---) будут иметь отформатированным только первый документ. Используйте поведение yaml.loadAll для многодокументных файлов — но данный инструмент в настоящее время обрабатывает только первый документ.
В чём разница между Format и To JSON? Format ре-сериализует разобранный YAML обратно в YAML с последовательными отступами. To JSON сериализует те же разобранные данные в JSON-документ. Обе операции используют один и тот же шаг парсинга, поэтому обе валидируют YAML и идентично завершаются неудачно на некорректных входных данных.
Сохраняет ли форматер комментарии? Нет. Парсер js-yaml отбрасывает комментарии в процессе парсинга. После форматирования комментарии из исходных входных данных не появятся в выводе. Если вам нужно сохранить комментарии, отредактируйте отступы вручную в исходном файле.
Можно ли конвертировать JSON в YAML? Этот инструмент конвертирует YAML в JSON. Для конвертации в обратном направлении используйте инструмент Скоро: JSON Converter, поддерживающий конвертацию из JSON в YAML.
Какую версию YAML поддерживает инструмент? Библиотека js-yaml реализует YAML 1.2, который строже в отношении булевых значений и некоторых других пограничных случаев по сравнению с YAML 1.1. Большинство современных YAML-файлов (Kubernetes, Docker Compose, GitHub Actions и т.д.) написаны с учётом совместимости с YAML 1.2.
Какое сочетание клавиш для конвертации в JSON? Нажмите Ctrl+Shift+J в Windows/Linux или Cmd+Shift+J в macOS для запуска операции конвертации в JSON. Нажмите Ctrl+Enter или Cmd+Enter для форматирования.
Отражает ли расширение файла при скачивании выполненную операцию? Не напрямую — обработчик загрузки проверяет, начинается ли текст вывода с { или [, чтобы выбрать между .json и .yaml. Отформатированный YAML, начинающийся с отображения, будет сохранён как .yaml, а конвертированный в JSON вывод (всегда начинающийся с { или [) будет сохранён как .json.
Связанные инструменты
JSON Formatter — Форматирование, валидация и минификация JSON с проверкой схемы, генерацией схемы и интерактивным просмотрщиком дерева.
XML Formatter — Форматирование и валидация XML-документов с теми же элементами управления отступами и поддержкой минификации.
Скоро: TOML Formatter — Форматирование и валидация файлов конфигурации TOML.
Попробуйте YAML Formatter прямо сейчас: YAML Formatter