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, но акцент в нём именно на структуре данных.
YAML придумали ещё в 2001 году, а первый официальный релиз был в 2004-м. Формат продолжали развивать — последняя версия вышла в 2021 году. Обычно для файлов YAML используют расширения .yml или .yaml.
Laptop With Linux Intel NUC13
Выбирайте любой из трёх процессоров Intel и устанавливайте любимую сборку Linux — всё под ваши задачи.
Чем YAML отличается от JSON?
Как JSON, только приятнее для глаз и проще для редактирования
JSON — ближайший родственник YAML и самый узнаваемый формат для хранения данных. Более того, YAML — это фактически надстройка над JSON: любой корректный JSON-файл автоматически считается валидным YAML. Например, самый простой YAML почти не отличается от JSON:
Вот так это выглядит в формате JSON:
На таком уровне отличий почти нет, но YAML однозначно проще читать и редактировать вручную — не нужны лишние кавычки, фигурные и квадратные скобки, запятые. Всё строится на обычных отступах и переносах строк.
Ключевой момент: для отступов в YAML допустимы только пробелы — табуляция не подойдёт. Если задать правильный размер отступа в редакторе, сразу заметны все ошибки с форматированием.
В некоторых вещах синтаксис YAML похож на Markdown: например, списки создаются строками с дефисом в начале:
Словари и списки можно свободно комбинировать, хоть в несколько уровней вложенности:
YAML поддерживает многострочные строки — для тех, кто привык к JSON, это будет очень кстати. Так называемый «литеральный блок» сохраняет все переносы строк, что удобно для форматированного текста:
Вариант с «folded block» — все переносы превращает в пробелы:
Эта запись отлично подходит, если вы хотите разбивать текст на абзацы — примерно как в Markdown или HTML.
Где реально применяют YAML?
Конфиги и DevOps любят YAML — и вот почему
Забавно, но официальный сайт YAML написан целиком... на самом YAML!
Но это скорее технодемка, чем практический пример. На самом деле главное применение YAML — быстрое и понятное хранение структурированных данных, а не сайты.
Сегодня YAML почти стандарт для конфигов современных приложений. Вот, например, если поискать в каталоге пользовательских настроек все YAML-файлы:
Если не брать gh — клиент для GitHub, остальные утилиты здесь — TUI-программы нового поколения, которые уже не сравнить с устаревшими INI-файлами или специфическими форматами настроек.
Вот пример конфига для gh — отличный образец YAML в деле:
Здесь есть всё, что нужно: понятные значения по умолчанию, заготовки для ваших параметров и комментарии с подсказками. Это сразу же выделяет 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 действительно много преимуществ. Именно поэтому всё больше специалистов переходят на него.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru