UltKit
Изображения11
PDF13
Документы и данные7
Видео6
Аудио4
Другие инструменты22

Конвертер JSON в YAML

Перепишите JSON в YAML, который легко читать, проверять и комментировать. Загрузите файлы .json и получите .yaml с отступами — с теми же ключами, значениями и порядком, готовый для добавления в репозиторий.

Конвертер данных

или перетащите сюда файлы CSV, TSV, TXT … ·

Макс. 95 MB на файл· До 20 файлов· Удаляются через 30 минут

Вывод

Файлы обрабатываются на наших серверах и удаляются через 30 минут.

Как пользоваться инструментом

  1. 1

    Добавьте файлы JSON

    Загрузите ответы API, экспортированные настройки или сгенерированные манифесты в формате .json: до 20 файлов, не более 95 MB каждый. В каждом файле должно быть одно корректное значение JSON.

  2. 2

    Оставьте настройки по умолчанию

    YAML уже выбран в поле Преобразовать в. Для файла конфигурации больше ничего менять не нужно: отступы в результате составляют два пробела.

  3. 3

    Конвертируйте и закоммитьте

    Нажмите Конвертировать в YAML, скачайте файлы .yaml, добавьте комментарии там, где они понадобятся следующему читателю, и сделайте коммит.

Ответ

Как конвертировать JSON в YAML?

Загрузите файл .json и нажмите Конвертировать в YAML. Объекты станут блоками «ключ: значение» с отступами, массивы — списками с дефисами, а строки, которые YAML может прочитать неверно, сохранят кавычки.

Зачем конвертировать JSON в YAML для конфигов

Большая часть JSON создаётся программами: ответ API, экспорт настроек, результат генератора. Большую часть YAML поддерживают люди. Конвертация обычно отмечает момент, когда данные перестают быть машинным выводом и становятся тем, чем владеет команда: манифестом развёртывания в Git, конвейером CI или набором переменных Ansible.

Типичный случай: вы вызываете облачный API, получаете JSON-описание ресурса на 200 строк и хотите хранить его как инфраструктурный код. После конвертации получается файл без скобок и запятых, где правка в одну строку даёт diff в одну строку, а необычные значения можно пояснить в комментариях. То же касается тестовых данных и файлов переводов, которые правят не разработчики. Если же нужна плоская таблица для электронной таблицы или отчёта, лучше подойдёт JSON в CSV.

Инструменты с конфигурацией в YAML

Где обычно используется полученный YAML
ОрганизацияТребованиеИсточник
GitHub ActionsРабочие процессы хранятся в .github/workflows как файлы .yml или .yamlGitHub Docs
GitLab CI/CDКонвейер описан в файле .gitlab-ci.yml в корне репозиторияGitLab Docs
Docker ComposeСервисы описываются в compose.yaml (ранее docker-compose.yml)Docker Docs
AnsibleПлейбуки и файлы переменных пишутся на YAMLAnsible Docs
KubernetesМанифесты принимаются в JSON или YAML; документация и чарты Helm используют YAMLKubernetes

Пример JSON в YAML со сложными значениями

Результат YAML для {"name":"api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"}
# YAML после конвертации
name: api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"

Что даёт YAML

  • Комментарии через #
  • Более короткие diff в код-ревью
  • Нет скобок, запятых и кавычек в большинстве строк
  • Многострочный текст через блочные скаляры |

На что обратить внимание

  • Отступы несут смысл, поэтому лишний пробел меняет структуру
  • Табуляция в отступах не допускается
  • Строки без кавычек могут быть прочитаны как числа или булевы значения
  • Парсеры медленнее и менее единообразны, чем для JSON

Пример показывает, почему простой замены скобок недостаточно. Версия 1.10 в JSON — строка; записанная в YAML без кавычек, она будет прочитана как число 1.1. NO, код ISO для Норвегии, парсеры YAML 1.1, например PyYAML, прочитают как false. Оба значения сохраняют кавычки, а настоящие числа и булевы значения остаются без них.

Сравнение JSON и YAML

JSON

Формат JSON (JavaScript Object Notation)

JSON — лёгкий текстовый формат для структурированных данных, который популяризировал Дуглас Крокфорд в начале 2000-х; он стандартизован как RFC 8259 и ECMA-404. Он описывает объекты, массивы, строки, числа, логические значения и null с помощью простого и читаемого синтаксиса. Это формат по умолчанию для веб-API, файлов конфигурации и обмена данными между приложениями практически на любом языке программирования. В нём нет встроенных комментариев, дат и схем, а большие вложенные файлы трудно читать без просмотрщика.

Сжатие
–
Прозрачность
–
Анимация
–
Год появления
2001 · Douglas Crockford
Конвертер JSON

YAML

YAML

YAML («YAML Ain't Markup Language») — удобный для человека формат данных, впервые выпущенный в 2001 году. Он использует отступы вместо скобок, поддерживает комментарии и является надмножеством JSON. Его широко применяют для конфигурации в Docker Compose, Kubernetes, GitHub Actions и многих приложениях. Из-за зависимости от пробелов его легко сломать одним лишним пробелом, а некоторые значения, например «no» или даты, могут интерпретироваться неожиданно.

Сжатие
–
Прозрачность
–
Анимация
–
Год появления
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
Конвертер YAML

JSON переводят в YAML, когда сгенерированные данные или данные из API должны стать файлом конфигурации, который поддерживают люди, проверяют в pull request и снабжают комментариями.

Вопросы о конвертере JSON в YAML

Разве JSON уже не является корректным YAML?

В YAML 1.2 да: редакция 2009 года составлена так, что любой документ JSON одновременно является документом YAML. Можно вставить JSON в файл .yaml, и большинство инструментов его примет. Конвертация нужна ради читаемости: блочный стиль без скобок, кавычек и запятых — то, что ждут рецензенты и следующий сопровождающий.

Почему некоторые значения в YAML взяты в кавычки?

Без кавычек YAML прочитает их как значение другого типа. Строка версии вроде 1.10 превратится в число 1.1, а yes или off в старых парсерах станут булевыми значениями. Строки, похожие на числа, даты или булевы значения, нужно брать в кавычки, чтобы они остались строками, поэтому аккуратная конвертация их сохраняет.

Можно ли добавить комментарии после конвертации?

Да, и это частая причина для конвертации. Напишите # и заметку в конце строки или на отдельной строке. В JSON нельзя объяснить, почему задано то или иное значение, а в YAML можно, что упрощает проверку и передачу проекта.

Почему YAML выдает ошибку из-за символа табуляции?

Спецификация YAML запрещает табуляцию в отступах: учитываются только пробелы. Конвертер записывает пробелы, но редактор, вставляющий табуляцию, может сломать файл при следующей правке. Настройте редактор на пробелы для файлов .yaml.

Примет ли Kubernetes сконвертированный манифест?

kubectl читает и JSON, и YAML, поэтому данные одинаковы в обоих случаях; просто версия YAML используется в большинстве документации, чартов Helm и код-ревью. Если позже понадобится вернуть JSON для jq или вызова API, YAML в JSON выполнит обратное преобразование.