В чем разница между YAML и JSON?
YAML и JSON – это два формата сериализации данных, которые обеспечивают удобный для чтения человеком механизм обмена данными. Они стандартизированым образом форматируют данные для обмена между программными приложениями. Оба представляют данные в виде пар «ключ-значение». JSON поддерживает объекты данных в виде значений, а YAML нет. Однако YAML поддерживает больше типов данных и более похож на естественный язык, а поэтому разработчикам проще его использовать.
Сравнение представления данных в YAML и JSON
Внешний вид и синтаксис JSON и YAML похожи, но все же имеют некоторые отличия.
На первый взгляд формат JSON в представлении данных больше похож на машинный, чем YAML. В синтаксисе JSON используются следующие символы:
- фигурные скобки для объектов;
- двоеточия для разделения пар «ключ-значение»;
- квадратные скобки для массивов;
- кавычки для вложения строк.
JSON был создан на основе небольшого подмножества синтаксиса JavaScript, что делает документы этого формата похожими на программный код.
В отличие от JSON, формат YAML выглядит больше как записи структурированных данных на бумаге. Его разработали специально для того, чтобы облегчить людям чтение данных. В синтаксисе YAML используются следующие символы:
- отступ для обозначения объектов;
- двоеточия для разделения пар «ключ-значение»;
- дефисы для массивов;
- символ решетки (#) для обозначения комментария.
YAML изначально создали для упрощения XML.
Примеры документов YAML и JSON
Примеры того, как документ, содержащий данные о товаре «футболка», будет выглядеть в форматах YAML и JSON:
YAML |
JSON |
type: T-Shirt price: 20.00 sizes:
reviews: # Note about reviews
rating: 4 created_at: 2023-04-19T12:30:00Z
rating: 5 created_at: 2023-05-02T15:00:00Z |
{ "product": { "type": "T-Shirt", "price": 20.00, "sizes": ["S", "M", "L"] "reviews": { { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" }, { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" } } } } |
Основные отличия YAML и JSON
Благодаря синтаксису YAML считается, что YAML-файл легче читать, понимать и писать, чем JSON, особенно тем, кто не является разработчиком. Далее мы обсудим другие основные отличия.
Типы данных
Формат JSON поддерживает следующие типы данных:
- Номер
- Логическое значение
- Значение NULL
- Строка
- Массив
- Объект (набор вложенных пар «ключ-значение»)
Формат YAML поддерживает все собственные типы данных любого динамического языка программирования. Например, он поддерживает коллекции вложенных данных, состоящих из последовательностей (списков), скаляров (таких, как числа и строки) и сопоставлений (пар «ключ-значение»). Такая поддержка позволяет создавать более сложные структуры данных.
Встроенная поддержка
JSON широко используется в сочетании со многими языками программирования. Например, JavaScript предлагает встроенную поддержку анализа JSON. Стандартная библиотека Python также включает JSON, а библиотека JSON встроена в PHP 5.2. Аналогичным образом более 50 других популярных языков поддерживают JSON с помощью различных пакетов и библиотек.
Для сравнения: ни один популярный язык не имеет встроенной поддержки YAML. Для этого разработчики должны устанавливать и использовать библиотеки. Два популярных анализатора YAML: PyYAML для Python и LibYAML для C.
Управление версиями
Вы можете создавать версии JSON и YAML с помощью такого программного обеспечения для управления версиями, как Git. Однако считается, что легче сканировать и отмечать изменения в файлах YAML между версиями.
Комментарии
Формат данных JSON не поддерживает комментарии. Поэтому чтобы их добавить, разработчикам нужно указать пару «ключ-значение» комментария.
В файле YAML комментарии следуют за символом решетки (#).
Когда использовать форматы YAML и JSON
Благодаря повсеместной поддержке и интеграции с JavaScript формат JSON является более популярным форматом сериализации данных в большинстве примерах использования по сравнению с YAML. Он широко применяется в распределенных программных коммуникациях, веб-приложениях, файлах конфигураций и API.
Хотя YAML может показаться лучше с точки зрения типизации данных и удобства для чтения, JSON обычно предпочтительнее для кросс-совместимости. Это связано с тем, что многие приложения и сервисы обрабатывают формат JSON по умолчанию.
Но формат YAML завоевал прочные позиции в определенных областях обработки данных благодаря своей читаемости и возможности включения комментариев. Примечательно, что YAML является основным форматом сериализации данных для файлов конфигурации во многих инструментах и сервисах автоматизации, DevOps и Инфраструктуры как кода (IaC). Например, формат YAML часто используется для файлов сервисов Docker и Kubernetes.
Формат YAML также используется для записи файлов конфигурации в следующих инструментах Amazon Web Services (AWS): AWS CloudFormation, Модель бессерверных приложений AWS (AWS SAM) и AWS CodeBuild.
Краткое описание различий YAML и JSON
JSON |
YAML |
|
Что это |
Формат сериализации данных для обмена структурированными данными между программными приложениями и сервисами. Используется приоритетно приложениями, а не человеком. |
Формат сериализации данных для обмена структурированными данными между программными приложениями и сервисами. Используется приоритетно человеком, а не приложениями. |
Основные примеры использования: |
широко применяется на разных платформах, в распределенных программных средствах связи, веб-приложениях, файлах конфигураций и API, поддерживается многими языками; |
файлы конфигураций во многих инструментах и сервисах автоматизации, DevOps и инфраструктуры в виде кода (IaC). |
Читабельность |
Простота. |
Легко читабельный. |
Типы данных |
Число, логическое значение, значение NULL, строка, массив и объект. |
Поддерживает все типы данных с помощью коллекций вложенных данных, которые включают последовательности, скаляры и сопоставления. |
Поддержка комментариев |
Нет. |
Да. |
Поддержка объектов данных в виде значений |
Да. |
Нет. |
Управление версиями |
Да, но сразу отсканировать и понять различия между версиями не так просто. |
Да, легко сканировать и сразу понимать различия между версиями. |
Как AWS обеспечивает соответствие вашим требованиям к форматам YAML и JSON?
Все сервисы интеграции данных AWS могут обрабатывать файлы формата JSON. Ниже представлены три соответствующих сервиса AWS.
- AWS Glue – это бессерверный сервис интеграции данных. Находите, готовьте и объединяйте данные для аналитики, машинного обучения и разработки приложений с помощью AWS Glue.
- Amazon Simple Queue Service (Amazon SQS) – сервис полностью управляемых очередей сообщений. Его можно использовать для отправки, хранения и получения сообщений между программными компонентами в любом объеме. Сообщения Amazon SQS могут содержать до 256 КБ текстовых данных, включая форматы XML, JSON, а так же неформатированный текст.
- Amazon DocumentDB (совместимость с MongoDB) – это полностью управляемая собственная база данных документов формата JSON. Она упрощает и удешевляет эксплуатацию важнейших рабочих нагрузок по обработке документов практически в любых масштабах без необходимости в управлении инфраструктурой.
Аналогично инструменты для разработчиков на AWS поддерживают файлы формата YAML в нескольких сервисах развертывания. Приведем два примера:
- AWS Step Functions позволяет создавать отказоустойчивые бессерверные рабочие процессы с использованием сервисов AWS, таких как AWS Lambda, Простой сервис уведомлений Amazon (Amazon SNS) и Amazon DynamoDB. Step Functions также поддерживает файлы формата YAML для определения конечных автоматов. Это позволяет описывать рабочие процессы на том же языке, что и ваша Инфраструктура как код (IaC).
- AWS App2Container – это инструмент командной строки, который можно использовать для переноса и модернизации веб-приложений Java и.NET в формат контейнера. Он генерирует файлы формата YAML для определений задач Amazon Elastic Container Service (Amazon ECS) и развертывания Kubernetes, а также соответствует рекомендациям AWS по безопасности и масштабируемости.
Создайте аккаунт прямо сейчас и начните работу с форматами YAML и JSON на AWS.