NordVPN
SponsoredStrict no-logs VPN with 6,400+ servers in 111 countries. Threat Protection blocks ads, trackers, and malware while you work online.
Get NordVPN →Вставьте JSON слева и получите YAML справа, или наоборот. Оба поля редактируются в реальном времени и синхронизируются автоматически. Включает кнопки форматирования JSON, замены и копирования. Конвертация происходит полностью в браузере без отправки данных на серверы.
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 отлично подходит, когда данные читают машины: REST API, записи баз данных, взаимодействие между сервисами и localStorage. Его простота означает, что практически в каждом языке программирования есть встроенный JSON-парсер, а строгие правила синтаксиса устраняют неоднозначность. Если основным потребителем является код, JSON почти всегда является правильным выбором.
YAML превосходен в конфигурационных файлах, редактируемых людьми: Docker Compose, манифесты Kubernetes, рабочие процессы GitHub Actions и плейбуки Ansible используют YAML по умолчанию. Комментарии позволяют создавать встроенную документацию, многострочные строки делают длинные значения читаемыми, а отсутствие фигурных скобок делает иерархические конфигурации менее загромождёнными.
Чувствительность YAML к отступам — наиболее частый источник ошибок. В отличие от фигурных скобок JSON, один неправильно расставленный пробел меняет структуру. YAML также выполняет автоматический вывод типов: голое yes становится булевым true, а 0755 может быть интерпретировано как восьмеричное число. Этот конвертер берёт строки в кавычки, которые могут быть неправильно интерпретированы, чтобы сохранить исходный тип.
Специальные символы создают ещё одну проблему. Двоеточие за которым следует пробел (: ), решётка (#) и специальные символы в начале строк должны быть взяты в кавычки в YAML. Этот конвертер обрабатывает эти случаи автоматически, но расширенные функции YAML, такие как якоря, псевдонимы и многострочные блочные скаляры, не поддерживаются и выведут понятное сообщение об ошибке.
Да. YAML 1.2 является строгим надмножеством JSON, что означает, что каждый валидный JSON-документ является валидным YAML. Обратное не всегда верно: функции YAML, такие как комментарии, якоря и блочные скаляры, не имеют эквивалентов в JSON.
YAML наиболее распространён в конфигурационных файлах: Docker Compose (docker-compose.yml), манифесты Kubernetes, GitHub Actions (.github/workflows), плейбуки Ansible. Его читаемый стиль подходит для файлов, которые разработчики редактируют вручную.
YAML обычно выигрывает для конфигураций, редактируемых людьми, поскольку поддерживает комментарии и менее избыточен визуально. JSON лучше для конфигураций, генерируемых или потребляемых машинами. Многие инструменты (ESLint, Prettier, tsconfig) принимают оба формата.
Строки, содержащие двоеточие за которым следует пробел, ведущие специальные символы ({, [, #, и т.д.) или значения, похожие на булевы значения или числа, должны быть взяты в кавычки. Одинарные кавычки отключают все экранирование; двойные кавычки используют обратные слеши, аналогично JSON. Конвертер автоматически добавляет кавычки там, где это необходимо.
Для типов, поддерживаемых JSON (строки, числа, булевы значения, null, объекты, массивы), конвертация является без потерь. Единственная потенциальная проблема — вывод типов YAML для значений без кавычек, поэтому конвертер берёт в кавычки строки, которые могут быть неправильно интерпретированы.
Используйте библиотеку PyYAML: import yaml, json; data = yaml.safe_load(open('файл.yaml')); print(json.dumps(data, indent=2)). Функция safe_load не выполняет произвольные YAML-теги, что важно для безопасности.
С пакетом js-yaml: const yaml = require('js-yaml'); const obj = JSON.parse(fs.readFileSync('файл.json')); console.log(yaml.dump(obj)). Для подхода без зависимостей напишите YAML-сериализатор вручную, что и делает этот конвертер.
Конвертер намеренно пропускает расширенные функции YAML: якоря (&якорь), псевдонимы (*псевдоним), теги типов (!!int, !!str), многострочные блочные скаляры (| и >), разделители документов (---). Они охватывают менее 5% реального YAML. Для этих случаев используйте полноценную библиотеку YAML.
Strict no-logs VPN with 6,400+ servers in 111 countries. Threat Protection blocks ads, trackers, and malware while you work online.
Get NordVPN →Managed cloud hosting for WordPress and web apps on DigitalOcean, Vultr, and AWS. Fast setup, no server headaches.
Try Cloudways →Hire freelancers for design, writing, dev, and marketing — or sell your own services. Millions of gigs at every budget.
Browse Fiverr →