Какво е YAML файл?
YAML файлът се състои от език YAML (YAML не е език за маркиране), който е базиран на Unicode език за сериализиране на данни; използвани за конфигурационни файлове, интернет съобщения, постоянство на обекти и т.н. YAML използва разширението .yaml за своите файлове. Синтаксисът му не зависи от конкретен език за програмиране. По принцип YAML е проектиран за човешко взаимодействие и да работи добре със съвременните езици за програмиране. Поддръжката за сериализиране на произволни естествени структури от данни увеличи четимостта на YAML файловете, но направи малко сложни процеса на анализиране и генериране на файлове.
Кратка история
YAML е предложен за първи път през 2001 г. и е разработен от Clark Evans, Ingy döt Net и Oren Ben-Kiki. За първи път се каза, че YAML означава „Още един език за маркиране“, за да се посочи неговата цел като език за маркиране. По-късно той беше преназначен като „YAML Aint Markup Language“, за да посочи целта си като ориентирана към данни.
YAML файлов формат
YAML файлът се състои от следните типове данни
- Скалари: Скаларите са стойности като низове, цели числа, булеви стойности и др.
- Поредици: Поредиците са списъци с всеки елемент, започващ с тире (-). Списъците също могат да бъдат вложени.
- Картографиране: Картографирането дава възможност за изброяване на ключове със стойности.
Синтаксис
- Бяло пространство: Вдлъбнатината на празното пространство се използва за обозначаване на влагане и цялостна структура.
име: Джон Смит
контакт:
дом: 1012355532
офис: 5002586256
адрес:
улица: |
123 алея Торнадо
Апартамент 16
град: East Centerville
състояние: KS
- Коментари: Коментари се пишат, започвайки със символа “#”.
# Това е YAML коментар
- Списъци: Тире (-) се използва за обозначаване на членове на списъка, като всеки член е на отделен ред. Членовете на списъка могат също да бъдат затворени в квадратни скоби ([…]), като членовете са разделени със запетаи (,).
- A
- B
- C
[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
...
- Тип: За указване на типа на стойността се използват двойни удивителни знаци (!!).
a: !!float 123
b: !!str 123
- Етикет: За да присвоите етикет на бележка, се използва амперсанд (&), а за препратка към този възел се използва звездичка (*).
име: Джон Смит
фактуриране до: &id01
улица: |
123 алея Торнадо
Апартамент 16
град: East Centerville
състояние: KS
изпращане до: *id01
- Директиви: YAML документите могат да бъдат предшествани от директиви в поток. Директивите започват със знак за процент (%), последван от името и след това параметрите, разделени с интервали.
%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 сериализирани данни с по-опростен дизайн |
По-малко подкрепа от общността | По-голяма подкрепа и популярност на общността |
Поддържа коментари | Не поддържа коментари |
Възможност за използване на препратка към други обекти с данни | Невъзможно сериализиране на сложни структури с препратки към обекти |
Йерархията се обозначава с помощта на двойни интервали. Табулаторите не са разрешени | Обектите и масивите се обозначават със скоби и скоби. |
Кавичките на низовете не са задължителни, но поддържа единични и двойни кавички. | Низовете трябва да са в двойни кавички. |
Коренният възел може да бъде всеки от валидните типове данни | Коренният възел трябва да бъде или масив, или обект. |