JSON Toolkit

JSON или YAML

Главное: JSON разделяет скобками, а YAML — отступами: машины получают JSON, люди, редактирующие конфигурацию, получают YAML. Комментарии, якоря и много-документная структура не выживают.

Начинающий~4 мин чтенияОпубликовано 2026-10-30Обновлено 2026-10-30
Когда использовать JSON, а когда YAML

Главное: используйте JSON для данных машина-машина и YAML для конфигурации, которую редактируют люди; предпочитайте YAML, когда нужны комментарии, многострочный текст или якоря, и JSON, когда каждый язык должен разбирать одну полезную нагрузку без неоднозначности.

Рядом

{
  "server": {
    "host": "127.0.0.1",
    "port": 8080
  }
}
server:
  host: 127.0.0.1
  port: 8080

Одна структура. YAML отбрасывает пунктуацию и получает место для комментария.

Где они различаются

JSON YAML
Структура Скобки и запятые Отступы
Комментарии Нет Да
Строки Двойные кавычки, требуется экранирование Обычно без кавычек
Многострочный текст Escape-последовательности \n или массивы Блочные скаляры `
Повторное использование Нет Якоря & и псевдонимы *
Несколько документов Обернуть в массив Разделители ---
Скорость парсинга Быстрая Медленнее, правила отступов
Неоднозначность Очень низкая no разбирается как булево, отступ на единицу

Последняя строка — реальная цена YAML. В YAML 1.1 country: NO даёт булево false, а version: 1.0 может стать числом с плавающей точкой. В JSON нет неявной типизации вообще.

Выбор

JSON: тела запросов и ответов, сообщения сервис-сервис, JSON-столбцы в базах данных, всё, что должно разбираться идентично в каждом языке.

YAML: экосистемы, где он по умолчанию (Kubernetes, Ansible, GitHub Actions, Docker Compose); конфигурация, где нужны объяснения; файлы, доминируемые длинным текстом, например сертификаты, скрипты или SQL.

Что теряет конвертация

YAML → JSON: все комментарии, повторное использование якорей (раскрывается в дубликаты), все документы кроме первого и исходное написание дат и булевых.

JSON → YAML: различие строка/число ослабевает, поэтому "8080" и 8080 оба требуют явных кавычек, чтобы оставаться безопасными.

Конвертируйте для миграций и разового просмотра. Не поддерживайте один файл в двух форматах как параллельные представления.

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

Как решить между JSON и YAML?

Начните с того, кто читает и поддерживает файл: используйте JSON, когда его генерирует программа, он пересекает языковые границы и должен разбираться предсказуемо; используйте YAML, когда его редактирует человек и нужны объяснения полей или длинный многострочный текст. Они конвертируются друг в друга, но не поддерживайте одну конфигурацию в обоих форматах долго.

Почему YAML даёт больше неоднозначности типов?

У YAML есть неявная типизация, поэтому значения вроде NO, on или 1.0 могут стать булевыми, датами или числами. У JSON только явные типы: строка должна быть в кавычках, что делает парсинг более предсказуемым между языками.

Должны ли комментарии и якоря выживать при конвертации YAML в JSON?

Нет. Комментарии, якоря и несколько документов YAML не могут быть представлены в JSON; якоря раскрываются в дублированный контент. Если нужно их сохранить, используйте библиотеку YAML с Document API вместо round trip через объект.

Дополнительное чтение