Формат yaml что это
Руководство для начинающих YAML
YAML — это не язык разметки или сокращенно YAML — это язык сериализации данных, обычно используемый в файлах конфигурации, таких как Kubernetes, Docker, Ansible и многих других. Его популярность росла с годами, что сделало его своего рода конкурентом JSON.
Хорошо, если YAML не является языком разметки, что это такое?
Как уже упоминалось, YAML — это язык сериализации данных, разработанный для улучшения удобочитаемости за счет использования отступов и собственных структур данных. Думайте об этом как о строгом надмножестве JSON или как о помесье JSON и XML. Этот гибрид позволяет ему делать то, что может JSON, и другие дополнительные функции.
Цель этого руководства — познакомить вас с YAML, дать вам руководство по синтаксису языка, предоставить вам быстрые инструменты для работы с YAML и научить использовать его для файлов конфигурации и многое другое.
Как написать YAML
Написание YAML невероятно интуитивно понятно (я думаю, в этом суть), поскольку он использует синтаксис пары ключ-значение. Таким образом, это похоже на словарь в Python. Однако, в отличие от Python, YAML не позволяет использовать интервалы табуляции; он использует пробелы.
Чтобы начать новый документ YAML, мы начинаем с трех тире, обозначающих начало нового файла.
Эта функция позволяет вам иметь несколько документов, разделенных тире, в одном файле.
Создайте файл с расширением.YAML и добавьте следующее содержимое.
—
language : Python
author : Guido van Rossum
country : Netherlands
—
language : JavaScript
author : Brendan Eich
country : United States
—
language : Ruby
author : Yukihiro Matsumoto
country : Japan
Как видно из приведенного выше файла, каждый документ в yaml начинается с трех точек, за которыми следуют данные, хранящиеся в парах ключ-значение.
Установите YAML linter
Прежде чем продолжить, давайте подтвердим, что у нас есть действующий файл YAML. Для этого нам необходимо установить линтер YAML.
Линтер — это инструмент, который проверяет и уведомляет разработчика об ошибках программирования, таких как синтаксические ошибки и недопустимые конструкции. Например, он позволяет вам проверить допустимый синтаксис файла.
В нашем примере мы будем использовать yamllint.
Для установки используйте apt как:
После установки мы можем запустить линтер для файла с помощью команды
Если файл содержит допустимый синтаксис YAML, он не дает нам никаких результатов.
Теперь попробуйте добавить пробелы внутри файла YAML или добавить один дефис внизу как:
—
language : Python
author : Guido van Rossum
country : Netherlands
—
language : JavaScript
author : Brendan Eich
country : United States
—
language : Ruby
author : Yukihiro Matsumoto
country : Japan
Если мы запустим линтер для этого файла, появятся ошибки, как показано ниже:
ПРИМЕЧАНИЕ. Подобно словарям в Python и аналогичным структурам данных в различных языках программирования, пары ключ-значение в документе YAML должны быть уникальными.
Типы данных YAML
YAML поддерживает различные способы представления данных. Они включают:
#: Scalar types
Это наиболее распространенный тип данных в YAML. Они представлены в виде пар «ключ-значение», как показано в примере выше.
Значения в паре могут быть любого типа, например строки, числа, включая шестнадцатеричные, целые числа и т. Д.
#: Strings
YAML также поддерживает строки, заключенные в одинарные или двойные кавычки. Это не является требованием, поскольку синтаксический анализатор YAML определит это, но может быть полезным, особенно в строках с escape-символами.
Ниже приведены примеры действительных строк в YAML.
—
string : This is a string
string2 : “This is also a string”
string : ‘so is this one’
ПРИМЕЧАНИЕ. Не забудьте закрыть двойные или одинарные кавычки, если они используются. Следующее приведет к ошибке.
invalid: ‘this is incorrect
Чтобы добавить абзац в файл YAML, используйте знак (больше). Не забудьте добавить пробел перед строкой. Например:
para: >
creating a paragraph
that spans for more than one
#: Numeric Types
Другой тип данных, поддерживаемый в YAML, — это числовые типы. Числовые типы включают целые, десятичные, шестнадцатеричные, восьмеричные и другие числовые типы.
Следующий синтаксис YAML представляет числовые типы.
#: Lists
Списки в YAML указываются одним тире как:
#: Sequences
Последовательности — это типы данных, используемые для хранения нескольких значений в одном и том же ключе. Например:
#: Mappings
Сопоставление очень похоже на последовательность, но состоит из пар ключ-значение, содержащихся в одной подгруппе.
—
Servers :
— apache :
name : server1
os : Debian 10
version : 2.4.46
— IIS :
name : iis-v01
os : Windows Datacenter 2019
version : 10.0.17763
мы устанавливаем null в YAML, используя тильду (
) или строку null, как показано в примере ниже:
#: Arrays
Массивы в YAML указываются в квадратных скобках в одной строке. В следующем примере показано определение массивов в YAML.
Комментарии YAML
YAML также поддерживает комментарии, которые позволяют добавлять дополнительную информацию к данным YAML. Парсер игнорирует комментарии.
YAML comments begin with an Octothorpe ( #).
# This is a comment in YAML
Преобразование YAML в JSON
В некоторых случаях нам может потребоваться преобразовать YAML в JSON. Поскольку они тесно связаны между собой, имеет смысл использовать одно в другом.
Для таких сценариев мы можем использовать такой инструмент, как yq, который представляет собой синтаксический анализатор YAML / XML для jq.
Чтобы установить его, используйте pip с командой, как показано ниже:
ПРИМЕЧАНИЕ. Убедитесь, что у вас установлен jq, поскольку это обязательная зависимость для yq.
Предположим, у нас есть образец файла для создания пода Kubernetes (Kubernetes.yaml) с таким содержимым, как показано:
—
apiVersion : v1
kind : Pod
metadata :
name : store-site
labels :
app : web
spec :
containers :
— name : nginx
image : nginx
ports :
— containerPort : 8080
volumeMounts :
— name : master
mountPath : /var/www/html/nginx
dnsPolicy : Default
volumes :
— name : home_directory
emptyDir :
ПРИМЕЧАНИЕ. Приведенный выше файл предназначен для иллюстрации и может содержать ошибки при использовании в реальном экземпляре Kubernetes.
Чтобы преобразовать файл YAML в JSON, используйте команду:
После выполнения приведенной выше команды содержимое файла автоматически преобразуется в JSON, как показано ниже:
Это упрощает работу при переходе с JSON на YAML и наоборот.
Заключение
YAML — это невероятно мощный инструмент, который позволяет создавать хорошо читаемые и совместимые файлы конфигурации для служб поддержки. Используя концепции этого руководства, вы можете создавать сложные документы YAML для своих приложений или приложений, поддерживающих YAML.
10 шагов к YAML-дзену
Мы все любим Ansible, но Ansible – это YAML. Для конфигурационных файлов существует масса форматов: списки значений, пары «параметр-значение», INI-файлы, YAML, JSON, XML и множество других. Однако по нескольким причинам из всех них YAML часто считается особенно трудным. В частности, несмотря на его освежающий минимализм и впечатляющие возможности для работы с иерархическими значениями, синтаксис YAML может раздражать своим Python-образными подходом к отступам.
Если вас бесит YAML, вы можете – и должны! – предпринять 10 следующих шагов, чтобы снизить свое раздражение до приемлемого уровня и полюбить YAML. Как и положено настоящему списку, наша десятка советов будет нумероваться с нуля, медитацию и духовные практики добавляем по желанию 😉
0. Заставьте ваш редактор работать
Неважно, какой у вас текстовый редактор – для него наверняка существует хотя бы один плагин для работы с YAML. Если у вас такого нет, немедленно найдите и установите. Потраченное на поиск и настройку время будет многократно окупаться каждый раз, когда вам придется редактировать YAML.
Например, редактор Atom поддерживает YAML по умолчанию, а вот для GNU Emacs придется установить дополнительные пакеты, например, yaml-mode.
Emacs в режиме YAML и отображения пробелов.
Если в вашем любимом редакторе нет режима YAML, то часть проблем можно решить, поработав с настройками. Например, штатный для GNOME текстовый редактор Gedit не имеет режима YAML, но по умолчанию подсвечивает синтаксис YAML и позволяет настроить работу с отступами:
Настройка отступов в Gedit.
А плагин drawspaces для Gedit отображает пробелы в виде точек, устраняя неясности с уровнями отступа.
Иными словами, потратьте время на изучение своего любимого редактора. Выясните, что он сам или его сообщество разработки предлагают для работы с YAML, и используйте эти возможности. Вы точно об этом не пожалеете.
1. Используйте линтер (linter)
В идеале языки программирования и языки разметки используют предсказуемый синтаксис. Компьютеры хорошо справляются с предсказуемостью, поэтому еще в 1978 году возникла концепция линтера. Если за 40 лет своего существования она прошла мимо вас и вы до сих пор не пользуетесь YAML-линтером, то самое время попробовать yamllint.
Установить yamllint можно с помощью штатного менеджера пакетов Linux. Например, в Red Hat Enterprise Linux 8 или Fedora это делается так:
Затем вы просто запускаете yamllint, передавая ему YAML-файл для проверки. Вот как это выглядит, если передать линтеру файл с ошибкой:
Цифры слева – это не время, а координаты ошибки: номер строки и столбца. Описание ошибки может вам ни о чем не говорить, зато вы точно знаете, где она находится. Просто посмотрите на это место в коде, и, скорее всего, все станет ясно.
Когда yamllint не находит ошибок в файле, на экран ничего не выводится. Если вас пугает такая тишина и хочется немного больше обратной связи, то можно запускать линтер с условной командой echo через двойной амперсанд (&&), вот так:
В POSIX двойной амперсанд срабатывает тогда и только тогда, когда предшествующая команда возвращает 0. А yamllint как раз возвращает количество найденных ошибок, поэтому вся эта условная конструкция и работает.
2. Пишите на Python, а не на YAML
Если вас реально бесит YAML, просто не пишите на нем, в буквальном смысле. Бывает, что YAML – это единственный формат, который воспринимается приложением. Но и в этом случае необязательно создавать YAML-файл. Пишите на том, что вам нравится, а потом конвертируйте. Например, для Python есть отличная библиотека pyyaml и целых два способа конвертирования: самоконвертирование и конвертирование через скрипты.
Самоконвертирование
В этом случае файл с данными заодно является и Python-скриптом, который генерирует YAML. Этот способ лучше всего подходит для небольших наборов данных. Вы просто пишите JSON-данные в переменную Python, предваряете это директивой import, а в конце файла добавляете три строчки для реализации вывода.
Теперь запускаем это файл на Python-е и на выходе получаем файл output.yaml:
Конвертирование через скрипты
В этом случае сначала пишем на JSON-е, а затем запускаем конвертор в виде отдельного Python-скрипта, который на выходе дает YAML. По сравнению с предыдущим этот способ лучше масштабируется, поскольку конвертирование отделено данных.
Для начала создадим JSON-файл example.json, например, его можно взять на json.org:
Затем создадим простой скрипт-конвертор и сохраним его под именем json2yaml.py. Этот скрипт импортирует оба модуля — YAML и JSON Python, а также загружает указанный пользователем файл JSON, выполняет конвертирование и пишет данные в файл output.yaml.
Сохраните этот скрипт в system path и запускайте по мере необходимости:
3. Парсите много и часто
Иногда на проблему полезно взглянуть под другим углом. Если вам трудно представить взаимосвязи между данными в YAML, можно временно преобразовать их в нечто более привычное.
Например, если вам удобно работать со словарными списками или с JSON, то YAML можно преобразовать в JSON всего двумя командами в интерактивной оболочке Python. Допустим, у вас есть YAML-файл mydata.yaml, тогда вот как это будет выглядеть:
На эту тему можно найти массу других примеров. Кроме того, в наличии множество онлайн-конвертеров и локальных парсеров. Так что не стесняйтесь переформатировать данные, когда видите в них только непонятную мешанину.
4. Читайте спеки
Возвращаясь к YAML после долгого перерыва, полезно зайти на yaml.org и перечитать спецификации (спеки). Если у вас трудности с YAML, но до спецификации руки так и не дошли, то пора эту ситуацию исправлять. Спеки на удивление легко написаны, а требования к синтаксису иллюстрируются большим количеством примеров в Главе 6.
5. Псевдоконфиги
При написании книги или статьи всегда полезно сперва набросать предварительный план, хотя бы в виде оглавления. Так же и с YAML. Скорее всего, вы представляете, какие данные надо записать в файл YAML, но не очень понимаете, как связать их друг с другом. Поэтому прежде чем ваять YAML, нарисуйте псевдоконфиг.
Псевдоконфиг похож на псевдокод, где не надо заботиться о структуре или отступах, отношениях «родитель-потомок», наследовании и вложенности. Так и здесь: вы рисуете итерации данных по мере того, как они возникают у вас в голове.
Псевдоконфиг с перечислением программистов (Martin и Tabitha) и их навыков (языков программирования: Python, Perl, Pascal и Lisp, Fortran, Erlang, соответственно).
Нарисовав псевдоконфиг на листе бумаги, внимательно проанализируйте его и, если все в порядке, оформите в виде валидного YAML-файла.
6. Дилемма «табуляция или пробелы»
Вам придется решить дилемму «табуляция или пробелы?». Не в глобальном смысле, а лишь на уровне вашей организации, или хотя бы проекта. Неважно, будет ли при этом использоваться пост-обработка скриптом sed, настройка текстовых редакторов на машинах программистов или же поголовное взятие расписок о строгом соблюдении указаний линтера под угрозой увольнения, но все члены вашей команды, которые так или иначе касаются YAML, в обязательном порядке должны использовать только пробелы (как того требует спецификация YAML).
В любом нормальном текстовом редакторе можно настроить автозамену табуляции на заданное количество пробелов, поэтому бунта приверженцев клавиши Tab можно не бояться.
Как хорошо известно каждому ненавистнику YAML, на экране не видно разницы между табуляцией и пробелами. А когда чего-то не видно, об этом, как правило, вспоминают в последнюю очередь, после того, как перебрали, проверили и устранили все остальные возможные проблемы. Час времени, убитый на поиск кривой табуляции или блока пробелов, просто вопиет о том, что вам над срочно создать политику использования того или другого, а затем реализовать железобетонную проверку ее соблюдения (например, через Git-хук для принудительного прогона через линтер).
7. Лучше меньше да лучше (или больше – это меньше)
Некоторые люди любят писать на YAML, поскольку он подчеркивает структуру. При этом они активно используют отступы, чтобы выделять блоки данных. Это такое своего рода жульничество для имитации языков разметки, в которых используются явные разделители.
Вот пример такой структурированности из документации Ansible:
Кому-то такой вариант помогает разложить в голове структуру YAML, других он наоборот раздражает массой ненужных, на их взгляд, отступов.
Но если вы являетесь владельцем YAML-документа и отвечаете за его сопровождение, то вы и только вы должны определять, как использовать отступы. Если вас раздражают большие отступы, сведите их к минимуму, который только возможен согласно спецификации YAML. Например, вышеприведенный файл из документации Ansible без каких бы то ни было потерь можно переписать вот так:
8. Используйте заготовки
Если при заполнении файла YAML вы постоянно повторяете одни и те же ошибки, имеет смысл вставить в него шаблон-заготовку в виде комментария. Тогда в следующий раз можно будет просто скопировать эту заготовку и вписать туда реальные данные, например:
9. Используйте что-то другое
Если приложение не держит вас мертвой хваткой, то, возможно, стоит сменить YAML на другой формат. Со временем конфигурационные файлы могут перерастать себя и тогда лучше преобразовать их в простые скрипты на Lua или Python.
YAML – отличная штука, которую многие любят за минимализм и простоту, но это далеко не единственный инструмент в вашем арсенале. Так что иногда от него можно отказаться. Для YAML легко найти библиотеки парсинга, поэтому, если вы предложите удобные варианты миграции, ваши пользователи относительно безболезненно переживут такой отказ.
Если же без YAML никак не обойтись, то возьмите на вооружение эти 10 советов и победите свою неприязнь к YAML раз и навсегда!
YAML — Краткое руководство
YAML не является языком разметки — это язык сериализации данных, который соответствует ожиданиям пользователей в отношении данных. Он разработан, чтобы быть дружественным к человеку и отлично работает с другими языками программирования. Это полезно для управления данными и включает печатные символы Unicode. В этой главе вы познакомитесь с YAML и получите представление о его функциях.
Формат
Рассмотрите текст, показанный ниже —
Текст YAML для этого будет представлен, как показано ниже —
Обратите внимание, что YAML принимает значение в строковом формате и представляет выходные данные, как указано выше.
Примеры
Давайте разберемся с форматами в YAML с помощью следующих примеров:
Рассмотрим следующий номер точки «пи», который имеет значение 3,1415926. В YAML это представлено как плавающее число, как показано ниже —
Предположим, несколько значений должны быть загружены в конкретной структуре данных, как указано ниже —
Когда вы загружаете это в YAML, значения берутся в структуре данных массива, которая является формой списка. Вывод как показано ниже —
Характеристики
YAML включает язык разметки с важной конструкцией, чтобы отличать ориентированный на данные язык с разметкой документа. Цели и особенности дизайна YAML приведены ниже —
Соответствует собственным структурам данных гибкой методологии и ее языкам, таким как Perl, Python, PHP, Ruby и JavaScript
Данные YAML переносимы между языками программирования
Включает в себя согласованную модель данных
Легко читается людьми
Поддерживает однонаправленную обработку
Простота внедрения и использования
Соответствует собственным структурам данных гибкой методологии и ее языкам, таким как Perl, Python, PHP, Ruby и JavaScript
Данные YAML переносимы между языками программирования
Включает в себя согласованную модель данных
Легко читается людьми
Поддерживает однонаправленную обработку
Простота внедрения и использования
YAML — Основы
Теперь, когда у вас есть представление о YAML и его функциях, давайте изучим его основы с помощью синтаксиса и других операций. Помните, что YAML включает в себя удобочитаемый структурированный формат.
Правила создания файла YAML
Когда вы создаете файл в YAML, вы должны помнить следующие основные правила —
YAML чувствителен к регистру
Файлы должны иметь расширение .yaml в качестве расширения.
YAML не позволяет использовать вкладки при создании файлов YAML; пробелы разрешены вместо
YAML чувствителен к регистру
Файлы должны иметь расширение .yaml в качестве расширения.
YAML не позволяет использовать вкладки при создании файлов YAML; пробелы разрешены вместо
Основные компоненты файла YAML
Основные компоненты YAML описаны ниже —
Обычный блочный формат
Этот формат блока использует дефис + пробел, чтобы начать новый элемент в указанном списке. Обратите внимание на пример, показанный ниже —
Встроенный формат отделяется запятой и пробелом, а элементы заключаются в JSON. Обратите внимание на пример, показанный ниже —
Свернутый текст преобразует символы новой строки в пробелы и удаляет начальные пробелы. Обратите внимание на пример, показанный ниже —
Структура, которая следует всем основным соглашениям YAML, показана ниже —
Сводка основных элементов YAML
Сводка основных элементов YAML приведена здесь: Комментарии в YAML начинаются с символа ( # ).
Комментарии должны быть отделены от других токенов пробелами.
Отступы для пробелов используются для обозначения структуры.
Вкладки не включены в качестве отступа для файлов YAML.
Члены списка обозначаются дефисом ( — ).
Члены списка заключены в квадратные скобки и разделены запятыми.
Несколько документов с отдельными потоками разделяются 3 дефисами (—).
Повторяющиеся узлы в каждом файле первоначально обозначаются амперсандом ( & ) и звездочкой ( * ) позже.
YAML всегда требует использования двоеточий и запятых в качестве разделителей списков, за которыми следует пробел со скалярными значениями.
Узлы должны быть помечены восклицательным знаком ( ! ) Или двойным восклицательным знаком ( !! ), за которым следует строка, которую можно развернуть в URI или URL.
Сводка основных элементов YAML приведена здесь: Комментарии в YAML начинаются с символа ( # ).
Комментарии должны быть отделены от других токенов пробелами.
Отступы для пробелов используются для обозначения структуры.
Вкладки не включены в качестве отступа для файлов YAML.
Члены списка обозначаются дефисом ( — ).
Члены списка заключены в квадратные скобки и разделены запятыми.
Несколько документов с отдельными потоками разделяются 3 дефисами (—).
Повторяющиеся узлы в каждом файле первоначально обозначаются амперсандом ( & ) и звездочкой ( * ) позже.
YAML всегда требует использования двоеточий и запятых в качестве разделителей списков, за которыми следует пробел со скалярными значениями.
Узлы должны быть помечены восклицательным знаком ( ! ) Или двойным восклицательным знаком ( !! ), за которым следует строка, которую можно развернуть в URI или URL.
YAML — Отступ и разделение
Отступ и разделение — это две основные концепции, когда вы изучаете любой язык программирования. В этой главе подробно рассматриваются эти две концепции, связанные с YAML.
Отступ YAML
YAML не содержит никаких обязательных пробелов. Кроме того, нет необходимости быть последовательным. Действительный отступ YAML показан ниже —
При работе с отступами в YAML следует помнить следующие правила: для блоков потока должны быть хотя бы некоторые пробелы с окружающим текущим уровнем блока.
Элементы списка блоков содержат те же отступы, что и уровень окружающих блоков, поскольку — считаются частью отступа.
При работе с отступами в YAML следует помнить следующие правила: для блоков потока должны быть хотя бы некоторые пробелы с окружающим текущим уровнем блока.
Элементы списка блоков содержат те же отступы, что и уровень окружающих блоков, поскольку — считаются частью отступа.
Пример предполагаемого блока
Обратите внимание на следующий код, который показывает отступ с примерами:
Разделение строк
Строки разделяются двойными кавычками. Если вы экранируете символы новой строки в данной строке, она полностью удаляется и переводится в пробел.
пример
В этом примере мы сфокусировали список животных, перечисленных в виде структуры массива с типом данных строки. Каждый новый элемент указан с префиксом дефиса, который упоминается как префикс.
Другой пример объяснения строкового представления в YAML приведен ниже.
Этот пример относится к набору сообщений об ошибках, которые пользователь может использовать, просто упомянув ключевой аспект и получив соответствующие значения. Этот шаблон YAML следует структуре JSON, которую может понять пользователь, который является новичком в YAML.
YAML — Комментарии
Теперь, когда вы знакомы с синтаксисом и основами YAML, давайте углубимся в его детали. В этой главе мы увидим, как использовать комментарии в YAML.
Особенности комментариев
Особенности комментариев в YAML приведены ниже —
Закомментированный блок пропускается во время выполнения.
Комментарии помогают добавить описание для указанного блока кода.
Комментарии не должны появляться внутри скаляров.
YAML не включает какой-либо способ экранирования хеш-символа (#), поэтому в многострочной строке нет способа отделить комментарий от необработанного строкового значения.
Закомментированный блок пропускается во время выполнения.
Комментарии помогают добавить описание для указанного блока кода.
Комментарии не должны появляться внутри скаляров.
YAML не включает какой-либо способ экранирования хеш-символа (#), поэтому в многострочной строке нет способа отделить комментарий от необработанного строкового значения.
Комментарии в коллекции показаны ниже —
Сочетание клавиш для комментирования блоков YAML — Ctrl + Q.
Выберите блок. Используйте «CTRL + /» в Linux и Windows и «CMD + /» для операционной системы Mac. Выполнить блок.
YAML — Коллекции и Структуры
YAML включает коллекции блоков, которые используют отступ для области видимости. Здесь каждая запись начинается с новой строки. Последовательности блоков в коллекциях обозначают каждую запись тире и пробелом (-). В YAML стили коллекций блоков не обозначены каким-либо конкретным индикатором. Набор блоков в YAML можно отличить от других скалярных величин с помощью идентификации пары ключ-значение, включенной в них.
Примеры
Рассмотрим пример последовательности скаляров, например, список игроков с мячом, как показано ниже —
В следующем примере показано отображение скаляров на скаляры —
В следующем примере показано отображение скаляров на последовательности:
Коллекции могут быть использованы для отображения последовательности, которые показаны ниже —
В коллекциях YAML включает стили потока с использованием явных индикаторов вместо использования отступов для обозначения пространства. Последовательность потоков в коллекциях записывается в виде списка через запятую, заключенного в квадратные скобки. Лучшая иллюстрация для коллекции, которая включена в PHP-фреймворки, такие как симфония.
Эти коллекции хранятся в документах. Разделение документов в YAML обозначается тремя дефисами или тире (—). Конец документа отмечен тремя точками (…).
Разделение документов в YAML обозначается тремя черточками (—). Конец документа представлен тремя точками (…).
Представление документа называется структурным форматом, который упоминается ниже —
Знак вопроса с комбинацией пробела указывает на сложное отображение в структуре. В коллекцию блоков пользователь может включить структуру с тире, двоеточием и вопросительным знаком. В следующем примере показано отображение между последовательностями —
YAML — Скаляры и теги
Новые строки в литералах показаны ниже —
Сложенные новые строки сохраняются для более отступов и пустых строк, как показано ниже —
Скалярные потоки YAML включают простые стили и стили в кавычках. Стиль в двойных кавычках включает различные escape-последовательности. Скаляры потока могут включать несколько строк; разрывы строк всегда складываются в этой структуре.
В YAML нетегированные узлы указываются с конкретным типом приложения. В примерах спецификации тегов обычно используются типы seq, map и str для хранилища тегов YAML. Теги представлены в качестве примеров, которые упомянуты ниже:
Целочисленные теги
Эти теги включают в себя целочисленные значения. Они также называются числовыми тегами.
Числа с плавающей точкой
Эти теги включают десятичные и экспоненциальные значения. Они также называются экспоненциальными метками.
Разные теги
Он включает в себя различные целочисленные, плавающие и строковые значения, встроенные в них. Следовательно, это называется разные теги.
YAML — Пример полной длины
В следующем полнометражном примере указывается конструкция YAML, которая включает символы и различные представления, которые будут полезны при преобразовании или обработке их в формате JSON. Эти атрибуты также называются именами ключей в документах JSON. Эти обозначения созданы в целях безопасности.
Приведенный выше формат YAML представляет различные атрибуты по умолчанию, адаптера и хоста с различными другими атрибутами. YAML также ведет журнал каждого сгенерированного файла, который отслеживает сгенерированные сообщения об ошибках. При преобразовании указанного файла YAML в формат JSON мы получаем желаемый результат, как указано ниже —
Давайте преобразуем YAML в формат JSON и проверим вывод.
Ключ по умолчанию с префиксом «
YAML — Процессы
YAML следует стандартной процедуре для процесса. Собственная структура данных в YAML включает простые представления, такие как узлы. Он также называется графом узла представления.
Он включает в себя отображение, последовательность и скалярные величины, которые сериализуются для создания дерева сериализации. При сериализации объекты конвертируются с потоком байтов.
Дерево событий сериализации помогает в создании представления символьных потоков, как показано на следующей диаграмме.
Обратная процедура анализирует поток байтов в сериализованное дерево событий. Позже узлы преобразуются в граф узлов. Эти значения позже преобразуются в собственную структуру данных YAML. Рисунок ниже объясняет это —
Представление
Последовательность
Последовательность относится к упорядоченному количеству записей, которое отображает неупорядоченную связь пары ключ-значение. Это соответствует списку массивов Perl или Python.
Код, показанный ниже, является примером представления последовательности:
картографирование
Сопоставление, с другой стороны, представляет собой структуру данных словаря или хэш-таблицу. Пример для того же самого упомянут ниже —
Скаляры
Скаляры представляют стандартные значения строк, целых чисел, дат и атомарных типов данных. Обратите внимание, что YAML также включает в себя узлы, которые определяют структуру типа данных. Для получения дополнительной информации о скалярах, пожалуйста, обратитесь к главе 6 этого руководства.
Сериализация
Процесс сериализации требуется в YAML, который облегчает удобную для человека последовательность ключей и имена якорей. Результатом сериализации является дерево сериализации YAML. Его можно обойти, чтобы произвести серию вызовов событий данных YAML.
Пример для сериализации приведен ниже —
презентация
Конечный результат сериализации YAML называется презентацией. Он представляет собой поток персонажа в человеческой дружеской манере. Процессор YAML включает в себя различные детали презентации для создания потока, обработки отступов и форматирования контента. Этот полный процесс руководствуется предпочтениями пользователя.
Примером процесса представления YAML является результат создания значения JSON. Соблюдайте приведенный ниже код для лучшего понимания —
анализ
Разбор является обратным процессом представления; он включает в себя поток символов и создает серию событий. Он отбрасывает детали, представленные в процессе представления, что вызывает события сериализации. Процедура синтаксического анализа может быть неудачной из-за некорректного ввода. Это в основном процедура, чтобы проверить, правильно ли сформирован YAML или нет.
Рассмотрим пример YAML, который упоминается ниже —
С тремя дефисами он представляет начало документа с различными атрибутами, позже определенными в нем.
YAML lint — это онлайн-анализатор YAML, помогающий проанализировать структуру YAML, чтобы проверить, действительна она или нет. Официальная ссылка на YAML lint указана ниже: http://www.yamllint.com/
Вы можете увидеть результат анализа, как показано ниже —
YAML — информационные модели
В этой главе будут подробно описаны процедуры и процессы, которые мы обсуждали в предыдущей главе. Информационные модели в YAML будут определять особенности процедуры сериализации и представления в систематическом формате с использованием конкретной схемы.
Для информационной модели важно представлять информацию о приложении, которая переносима между средами программирования.
Диаграмма, показанная выше, представляет собой обычную информационную модель, которая представлена в графическом формате. В YAML представление нативных данных укоренено, связано и является ориентированным графом теговых узлов. Если мы упомянем направленный граф, он включает в себя набор узлов с ориентированным графом. Как упоминалось в информационной модели, YAML поддерживает три вида узлов, а именно:
Основные определения этих узлов представления обсуждались в предыдущей главе. В этой главе мы сосредоточимся на схематическом представлении этих терминов. Следующая диаграмма последовательности представляет рабочий процесс легенд с различными типами тегов и узлов отображения.
Последовательности
Узел последовательности следует последовательной архитектуре и включает упорядоченную серию из нуля или более узлов. Последовательность YAML может содержать один и тот же узел повторно или один узел.