Перейти к содержимому

Конвертировать YAML в формат JSON

Разбирает один YAML-документ библиотекой yaml (core schema YAML 1.2) и выводит его как JSON с отступами. Комментарии удаляются, якоря и алиасы разворачиваются, а значения вроде yes или 2024-01-01 остаются строками.

Отправить настройки, записанные в YAML, в API или валидатор JSON Schema, которые принимают только JSON.

YAML

JSON

Когда пригодится

  • Отправить настройки, записанные в YAML, в API или валидатор JSON Schema, которые принимают только JSON.
  • Проверить, как на самом деле типизирован файл CI или Kubernetes, например является ли версия строкой или числом.

Как пользоваться

  1. Вставьте один YAML-документ или загрузите файл .yaml/.yml.
  2. Если появилась ошибка, проверьте в указанной строке отступы, дублирующиеся ключи и разделители ---.
  3. Сверьте строки и числа в выводе JSON, затем скопируйте его.

Входной YAML

# deployment settings
service: billing-api
replicas: 2
version: "1.10"
enabled: yes
ports:
  - 80
  - 443
env:
  LOG_LEVEL: info

JSON

{
  "service": "billing-api",
  "replicas": 2,
  "version": "1.10",
  "enabled": "yes",
  "ports": [
    80,
    443
  ],
  "env": {
    "LOG_LEVEL": "info"
  }
}

Подробности и ограничения

Разбор выполняется в браузере. Вывод всегда JSON с отступом в 2 пробела; опции минификации нет.

Действуют правила YAML 1.2: yes/no/on/off — строки, а не boolean, а даты без кавычек остаются строками. 0o17 — восьмеричное число (15).

Ключи слияния (<<: *anchor) не объединяются; они появляются как буквальный ключ "<<". Дублирующиеся ключи в одном mapping считаются ошибкой.

Целые числа больше 2^53 теряют точность в JSON. Берите длинные ID в YAML в кавычки.

FAQ

Можно ли преобразовать файл с несколькими документами, разделёнными ---?

Нет. Несколько документов вызывают ошибку "Source contains multiple documents". Вставляйте по одному документу. Один ведущий --- допустим.

Почему enabled: yes в JSON — строка?

Парсер следует YAML 1.2, где boolean-значениями являются только true и false. Пишите true/false, если нужен boolean в JSON.

Поддерживаются ли якоря и алиасы?

Да. Алиас вроде *base заменяется копией значения с якорем. Однако ключ слияния << из YAML 1.1 не применяется.

Спецификации и справка