aspose.info
RU

Формат файла YAML

Обновлено

.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 приведены ниже:

YAMLJSON
Сложный и трудоемкий процесс анализа сериализованных данныхБыстрый и простой анализ сериализованных данных JSON благодаря более простому дизайну
Меньше поддержки сообществаШирокая поддержка и популярность сообщества
Поддерживает комментарииНе поддерживает комментарии
Возможность использовать ссылки на другие объекты данныхНевозможно сериализовать сложные структуры со ссылками на объекты
Иерархия обозначается двойным пробелом. Символы табуляции не допускаютсяОбъекты и массивы обозначаются фигурными скобками и квадратными скобками.
Строковые кавычки необязательны, но поддерживаются одинарные и двойные кавычки.Строки должны быть заключены в двойные кавычки.
Корневой узел может быть любым допустимым типом данныхКорневой узел должен быть либо массивом, либо объектом.

Использованная литература

См. также