.YAML вариант №
Файл YAML состоит из языка YAML (YAML не является языком разметки), который представляет собой язык сериализации данных на основе Unicode; используется для файлов конфигурации, обмена сообщениями в Интернете, сохранения объектов и т. д. YAML использует расширение .yaml для своих файлов. Его синтаксис не зависит от конкретного языка программирования. По сути, YAML предназначен для взаимодействия с человеком и хорошо работает с современными языками программирования. Поддержка сериализации произвольных собственных структур данных повысила читабельность файлов YAML, но немного усложнила процесс синтаксического анализа и генерации файлов.
Краткая история
YAML был впервые предложен в 2001 году и разработан Кларком Эвансом, Инги Дот Нет и Орен Бен-Кики. Сначала было сказано, что YAML означает «Еще один язык разметки», чтобы указать на его назначение в качестве языка разметки. Позже он был перепрофилирован как «YAML Aint Markup Language», чтобы указать его назначение как ориентированное на данные.
Формат файла YAML
Файл YAML состоит из следующих типов данных
- Скаляры: Скаляры — это такие значения, как строки, целые числа, логические значения и т. д.
- Последовательности: Последовательности представляют собой списки, в которых каждый элемент начинается с дефиса (-). Списки также могут быть вложенными.
- Mappings: Mapping дает возможность перечислить ключи со значениями.
Синтаксис
- Пробел: отступ пробела используется для обозначения вложенности и общей структуры.
``ямл Имя: Джон Смит контакт: домашний: 1012355532 офис: 5002586256 адрес: улица: | 123 Аллея Торнадо Люкс 16 город: Ист Сентервиль государство: КС
- **Комментарии**: Комментарии начинаются с символа «#».
``ямл
# Это комментарий YAML
- Списки: Дефис (-) используется для обозначения элементов списка, где каждый элемент находится в отдельной строке. Члены списка также могут быть заключены в квадратные скобки ([…]), а элементы разделены запятыми (,).
``ямл
- A
- B
- C
``ямл
[А, Б, С]
- Ассоциативный массив: ассоциативный массив заключен в фигурные скобки ({…}). Ключи и значения разделяются двоеточием (:), а каждая пара разделяется запятой (,).
``ямл {name: John Smith, age: 20}
- **Строки**: Строка может быть записана с двойными (") или одинарными (') кавычками или без них.
``ямл
Образец строки
«Образец строки»
«Образец строки»
- Содержимое скалярного блока: Скалярное содержимое можно записать в блочной записи, используя следующее:
- |: All live breaks are significant.
- >: Each line break is folded to space. It removes the leading whitespace for each line.
``ямл данные: | YAML (YAML не является языком разметки) это язык сериализации данных
``ямл
данные: ?
YAML (YAML не является языком разметки)
это язык сериализации данных
- Несколько документов: несколько документов разделяются тремя дефисами (—) в одном потоке. Дефисы обозначают начало документа. Дефисы также используются для отделения директив от содержимого документа. Конец документа обозначается тремя точками (…).
``ямл
Документ 1
Документ 2 …
- **Тип**: для указания типа значения используются двойные восклицательные знаки (!!).
``ямл
а: !! с плавающей запятой 123
б: !!стр 123
- Тег: для назначения тега заметке используется амперсанд (&), а для ссылки на этот узел используется звездочка (*).
``ямл Имя: Джон Смит счет: &id01 улица: | 123 Аллея Торнадо Люкс 16 город: Ист Сентервиль государство: КС
адрес доставки: *id01
- **Директивы**: документам YAML могут предшествовать директивы в потоке. Директивы начинаются со знака процента (%), за которым следует имя, а затем параметры, разделенные пробелами.
``ямл
%ЯМЛ 1.2
---
Содержание документа
Пример YAML-файла
Здесь вы можете увидеть пример файла docker yaml ниже:
topology:
database_node_name: docker_controller
docker_controller_node_name: docker_controller
self_service_portal_node_name: docker_controller
kvm_compute_node_names: kvm_compute1
docker_compute_node_names: docker_compute1
YAML против JSON
По сути, и JSON, и YAML разработаны для обеспечения удобочитаемого формата обмена данными. YAML реализован как надмножество формата JSON. Это означает, что мы можем анализировать JSON с помощью парсера YAML. Хотя практическая реализация этой теории немного сложна. Поэтому некоторые основные различия между YAML и JSON приведены ниже:
YAML | JSON |
---|---|
Сложный и трудоемкий процесс анализа сериализованных данных | Быстрый и простой анализ сериализованных данных JSON благодаря более простому дизайну |
Меньше поддержки сообщества | Широкая поддержка и популярность сообщества |
Поддерживает комментарии | Не поддерживает комментарии |
Возможность использовать ссылки на другие объекты данных | Невозможно сериализовать сложные структуры со ссылками на объекты |
Иерархия обозначается двойным пробелом. Символы табуляции не допускаются | Объекты и массивы обозначаются фигурными скобками и квадратными скобками. |
Строковые кавычки необязательны, но поддерживаются одинарные и двойные кавычки. | Строки должны быть заключены в двойные кавычки. |
Корневой узел может быть любым допустимым типом данных | Корневой узел должен быть либо массивом, либо объектом. |