JSON или YAML
Главное: JSON разделяет скобками, а YAML — отступами: машины получают 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 через объект.