Конвертер JSON ↔ YAML — Двунаправленный
Вставьте JSON слева и получите YAML справа, или наоборот. Оба поля редактируются в реальном времени и синхронизируются автоматически. Включает кнопки форматирования JSON, замены и копирования. Конвертация происходит полностью в браузере без отправки данных на серверы.
Как это работает
История и применение JSON и YAML
JSON (JavaScript Object Notation) был представлен Дугласом Крокфордом в начале 2000-х годов как лёгкий формат обмена данными, основанный на синтаксисе объектных литералов JavaScript. Строгая грамматика — двойные кавычки, отсутствие завершающих запятых, отсутствие комментариев — делает его однозначным и простым для разбора на любом языке. JSON быстро вытеснил XML в веб-API благодаря лаконичности и нативной совместимости с JavaScript.
YAML (YAML Ain't Markup Language) был создан в 2001 году Кларком Эвансом и Инги дёт Нетом с целью быть более удобным для людей. YAML 1.2 технически является надмножеством JSON — каждый валидный JSON-документ является валидным YAML — но YAML добавляет структуру на основе отступов, комментарии, многострочные строки и вывод типов, делая его более удобным для конфигурационных файлов, редактируемых вручную.
Когда использовать JSON, а когда YAML
JSON отлично подходит, когда данные читают машины: REST API, записи баз данных, взаимодействие между сервисами и localStorage. Его простота означает, что практически в каждом языке программирования есть встроенный JSON-парсер, а строгие правила синтаксиса устраняют неоднозначность. Если основным потребителем является код, JSON почти всегда является правильным выбором.
YAML превосходен в конфигурационных файлах, редактируемых людьми: Docker Compose, манифесты Kubernetes, рабочие процессы GitHub Actions и плейбуки Ansible используют YAML по умолчанию. Комментарии позволяют создавать встроенную документацию, многострочные строки делают длинные значения читаемыми, а отсутствие фигурных скобок делает иерархические конфигурации менее загромождёнными.
Типичные ошибки при конвертации
Чувствительность YAML к отступам — наиболее частый источник ошибок. В отличие от фигурных скобок JSON, один неправильно расставленный пробел меняет структуру. YAML также выполняет автоматический вывод типов: голое yes становится булевым true, а 0755 может быть интерпретировано как восьмеричное число. Этот конвертер берёт строки в кавычки, которые могут быть неправильно интерпретированы, чтобы сохранить исходный тип.
Специальные символы создают ещё одну проблему. Двоеточие за которым следует пробел (: ), решётка (#) и специальные символы в начале строк должны быть взяты в кавычки в YAML. Этот конвертер обрабатывает эти случаи автоматически, но расширенные функции YAML, такие как якоря, псевдонимы и многострочные блочные скаляры, не поддерживаются и выведут понятное сообщение об ошибке.
Частые вопросы
›Является ли YAML надмножеством JSON?
Да. YAML 1.2 является строгим надмножеством JSON, что означает, что каждый валидный JSON-документ является валидным YAML. Обратное не всегда верно: функции YAML, такие как комментарии, якоря и блочные скаляры, не имеют эквивалентов в JSON.
›Для чего в основном используется YAML?
YAML наиболее распространён в конфигурационных файлах: Docker Compose (docker-compose.yml), манифесты Kubernetes, GitHub Actions (.github/workflows), плейбуки Ansible. Его читаемый стиль подходит для файлов, которые разработчики редактируют вручную.
›JSON или YAML для конфигурационных файлов?
YAML обычно выигрывает для конфигураций, редактируемых людьми, поскольку поддерживает комментарии и менее избыточен визуально. JSON лучше для конфигураций, генерируемых или потребляемых машинами. Многие инструменты (ESLint, Prettier, tsconfig) принимают оба формата.
›Как YAML обрабатывает специальные символы?
Строки, содержащие двоеточие за которым следует пробел, ведущие специальные символы ({, [, #, и т.д.) или значения, похожие на булевы значения или числа, должны быть взяты в кавычки. Одинарные кавычки отключают все экранирование; двойные кавычки используют обратные слеши, аналогично JSON. Конвертер автоматически добавляет кавычки там, где это необходимо.
›Является ли конвертация JSON в YAML без потерь?
Для типов, поддерживаемых JSON (строки, числа, булевы значения, null, объекты, массивы), конвертация является без потерь. Единственная потенциальная проблема — вывод типов YAML для значений без кавычек, поэтому конвертер берёт в кавычки строки, которые могут быть неправильно интерпретированы.
›Как конвертировать YAML в JSON на Python?
Используйте библиотеку PyYAML: import yaml, json; data = yaml.safe_load(open('файл.yaml')); print(json.dumps(data, indent=2)). Функция safe_load не выполняет произвольные YAML-теги, что важно для безопасности.
›Как конвертировать JSON в YAML в Node.js?
С пакетом js-yaml: const yaml = require('js-yaml'); const obj = JSON.parse(fs.readFileSync('файл.json')); console.log(yaml.dump(obj)). Для подхода без зависимостей напишите YAML-сериализатор вручную, что и делает этот конвертер.
›Какие функции YAML не поддерживаются?
Конвертер намеренно пропускает расширенные функции YAML: якоря (&якорь), псевдонимы (*псевдоним), теги типов (!!int, !!str), многострочные блочные скаляры (| и >), разделители документов (---). Они охватывают менее 5% реального YAML. Для этих случаев используйте полноценную библиотеку YAML.
Похожие инструменты
Обновлено: