Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Оставьте скучный JSON в прошлом: вот почему профи выбирают YAML для настройки программ!

JSON хорошо знаком большинству как формат для хранения данных — его используют для конфигов, ответов API, сохранения игр и во многих других задачах. Несмотря на свою популярность, у JSON есть свои минусы, и это далеко не единственный вариант. YAML — формат, который появился даже раньше JSON. Хотя он встречается реже, у него немало плюсов. Сначала YAML может показаться запутанным. Даже его название менялось: сперва это была аббревиатура Yet Another Markup Language («ещё один язык разметки»), а позже расшифровывалась как YAML Ain’t Markup Language («YAML — не язык разметки»). Такие игры слов в IT — обычное дело, особенно у поклонников Unix. Чтобы лучше понять YAML, давайте разберёмся с понятием «язык разметки». Обычно это простой текст, в который добавлены специальные пометки — аннотации, описывающие структуру и содержание. Самый известный пример — HTML: на нём делают сайты, создают ссылки, вставляют картинки. Есть и другие языки разметки, вроде XML и SGML, они похожи на HTML, но исполь
Оглавление

JSON хорошо знаком большинству как формат для хранения данных — его используют для конфигов, ответов API, сохранения игр и во многих других задачах. Несмотря на свою популярность, у JSON есть свои минусы, и это далеко не единственный вариант.

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

Что такое YAML и зачем он нужен?

Формат, который называют языком разметки, но это не совсем так

Сначала YAML может показаться запутанным. Даже его название менялось: сперва это была аббревиатура Yet Another Markup Language («ещё один язык разметки»), а позже расшифровывалась как YAML Ain’t Markup Language («YAML — не язык разметки»). Такие игры слов в IT — обычное дело, особенно у поклонников Unix.

Чтобы лучше понять YAML, давайте разберёмся с понятием «язык разметки». Обычно это простой текст, в который добавлены специальные пометки — аннотации, описывающие структуру и содержание. Самый известный пример — HTML: на нём делают сайты, создают ссылки, вставляют картинки.

Есть и другие языки разметки, вроде XML и SGML, они похожи на HTML, но используются для других целей. Даже Markdown — по сути тоже язык разметки, несмотря на простоту.

Но всё же YAML — это не язык разметки, а язык сериализации данных. Проще говоря, это удобный способ записывать сложные данные, чтобы их легко можно было хранить и использовать. Если сравнивать: YAML — это как продвинутый JSON с элементами привычного HTML, но акцент в нём именно на структуре данных.

-2

YAML придумали ещё в 2001 году, а первый официальный релиз был в 2004-м. Формат продолжали развивать — последняя версия вышла в 2021 году. Обычно для файлов YAML используют расширения .yml или .yaml.

-3

Laptop With Linux Intel NUC13

Выбирайте любой из трёх процессоров Intel и устанавливайте любимую сборку Linux — всё под ваши задачи.

Чем YAML отличается от JSON?

Как JSON, только приятнее для глаз и проще для редактирования

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

Вот так это выглядит в формате JSON:

На таком уровне отличий почти нет, но YAML однозначно проще читать и редактировать вручную — не нужны лишние кавычки, фигурные и квадратные скобки, запятые. Всё строится на обычных отступах и переносах строк.

Ключевой момент: для отступов в YAML допустимы только пробелы — табуляция не подойдёт. Если задать правильный размер отступа в редакторе, сразу заметны все ошибки с форматированием.

В некоторых вещах синтаксис YAML похож на Markdown: например, списки создаются строками с дефисом в начале:

Словари и списки можно свободно комбинировать, хоть в несколько уровней вложенности:

-4

YAML поддерживает многострочные строки — для тех, кто привык к JSON, это будет очень кстати. Так называемый «литеральный блок» сохраняет все переносы строк, что удобно для форматированного текста:

Вариант с «folded block» — все переносы превращает в пробелы:

Эта запись отлично подходит, если вы хотите разбивать текст на абзацы — примерно как в Markdown или HTML.

Где реально применяют YAML?

Конфиги и DevOps любят YAML — и вот почему

Забавно, но официальный сайт YAML написан целиком... на самом YAML!

-5

Но это скорее технодемка, чем практический пример. На самом деле главное применение YAML — быстрое и понятное хранение структурированных данных, а не сайты.

Сегодня YAML почти стандарт для конфигов современных приложений. Вот, например, если поискать в каталоге пользовательских настроек все YAML-файлы:

-6

Если не брать gh — клиент для GitHub, остальные утилиты здесь — TUI-программы нового поколения, которые уже не сравнить с устаревшими INI-файлами или специфическими форматами настроек.

Вот пример конфига для gh — отличный образец YAML в деле:

-7

Здесь есть всё, что нужно: понятные значения по умолчанию, заготовки для ваших параметров и комментарии с подсказками. Это сразу же выделяет YAML на фоне JSON, ведь комментарии в JSON не поддерживаются (разве что в расширении JSONC).

Подпишитесь на рассылку — всё о YAML и тонкостях настройки ПО

Многие DevOps-инструменты, например, Docker и Kubernetes, перешли на YAML именно за счёт его удобочитаемости. Docker Compose и описания объектов Kubernetes полностью строятся на этом формате.

Есть и полезная утилита yq — по смыслу это как jq для JSON, только для работы с YAML: с её помощью можно искать, фильтровать и менять данные в YAML-файлах.

Через yq легко конвертировать JSON-файл в YAML:

Можно также автоматически дописывать или редактировать данные: искать нужный элемент в массиве и менять его значение в пару кликов.

Когда YAML уместен — это почти идеальное решение

Признаем, YAML не всегда лучше JSON — всё же JSON используется практически везде и поддерживается любым ПО. Но в задачах настройки и хранения сложных структурированных данных у YAML действительно много преимуществ. Именно поэтому всё больше специалистов переходят на него.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: