Учебники

YAML — символьные потоки

В YAML вы сталкиваетесь с различными потоками символов следующим образом:

  • Директивы
  • Маркеры границ документа
  • документы
  • Полный поток

В этой главе мы обсудим их подробно.

Директивы

Директивы являются основными инструкциями, используемыми в процессоре YAML. Директивы — это детали представления, такие как комментарии, которые не отражены в дереве сериализации. В YAML нет способа определить частные директивы. В этом разделе обсуждаются различные типы директив с соответствующими примерами —

Зарезервированные Директивы

Зарезервированные директивы инициализируются тремя символами дефиса (—), как показано в примере ниже. Зарезервированные директивы преобразуются в конкретное значение JSON.

%YAML 1.1
--- !!str
"foo"

Директива YAML

Директивы YAML являются директивами по умолчанию. При преобразовании в JSON извлекаемое значение включает символ косой черты в предшествующих и завершающих символах.

%YAML 1.1
---
!!str "foo"

Маркеры границ документа

YAML использует эти маркеры, чтобы позволить нескольким документам содержаться в одном потоке. Эти маркеры специально используются для передачи структуры документа YAML. Обратите внимание, что строка, начинающаяся с «—», используется для начала нового документа.

Следующий код объясняет это примерами:

%YAML 1.1
---
!!str "foo"
%YAML 1.1
---
!!str "bar"
%YAML 1.1
---
!!str "baz"

документы

Документ YAML рассматривается как единая собственная структура данных, представленная как один корневой узел. Детали представления в документе YAML, такие как директивы, комментарии, отступы и стили, не считаются содержимым, включенным в них.

В YAML используются два типа документов. Они объяснены в этом разделе —

Явные документы

Он начинается с маркера начала документа, за которым следует представление корневого узла. Пример явного объявления YAML приведен ниже —

---

some: yaml

...

Он включает в себя явные начальные и конечные маркеры, которые в данном примере являются «—» и «…». При преобразовании указанного YAML в формат JSON мы получаем вывод, как показано ниже —

{
   "some": "yaml"
}

Неявные документы

Эти документы не начинаются с маркера начала документа. Соблюдайте приведенный ниже код —

fruits:
   - Apple
   - Orange
   - Pineapple
   - Mango

Преобразуя эти значения в формат JSON, мы получаем вывод в виде простого объекта JSON, как показано ниже —

{
   "fruits": [
      "Apple",
      "Orange",
      "Pineapple",
      "Mango"
   ]
}

Полный поток

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

Пример полного потока (символьный поток) показан ниже —