Введення в YAML для початківців

Якщо ви розробник, який пише API, ви, ймовірно, стикалися з YAML, хоча вашим основним інструментом серіалізації може бути JSON.

YAML має власний зручний синтаксис, і це зручна мова, яку можна додати до свого арсеналу розробки.

Давайте вивчимо основи YAML.

Серіалізація даних

Кожного разу, коли ви хочете надіслати якусь структуру даних або об’єкт через комп’ютерні мережі, скажімо, Інтернет, ви повинні перетворити їх у спеціальний формат, щоб прочитати та зберегти. Процес широко відомий як серіалізація і має величезне значення в Інтернеті. Типовим прикладом використання серіалізації є читання даних із баз даних і передача їх через Інтернет.

Деякі форми серіалізації включають JSON, YAML, XML.

У цій статті ми говоримо про YAML, а в кінці статті ви зможете ознайомитися з YAML і матимете чіткий вступ до YAML.

Що таке YAML і яку користь він мені приносить?

YAML — це формат серіалізації даних, який означає, що YAML не є мовою розмітки.

Основною перевагою використання YAML є можливість читання та запису. Якщо у вас є файл конфігурації, який має бути легшим для читання, краще використовувати YAML. YAML не є повною заміною JSON, оскільки JSON і XML також мають свої місця; незважаючи на це, корисно вивчати YAML.

Ще однією перевагою YAML є підтримка різних типів даних, таких як регістри, масиви, словники, списки та скаляри. Він має хорошу підтримку найпопулярніших мов, таких як JavaScript, Python, Ruby, Java тощо.

  Як налаштувати екран Apple CarPlay

YAML підтримує лише пробіли, і він чутливий до регістру та пробілів. Вкладки не приймаються повсюдно. Файл YAML має розширення .yaml.

Базовий синтаксис YAML

Кожен YAML починається з — що означає початок файлу YAML.

Під час створення API нас цікавить функція YAML, відома як відображення.

Наступні приклади показують приклад відображення в YAML.

---
name: James
boy: yes
GPA: 3.41

Синтаксис відображення ключ: значення. (Зверніть увагу на простір, це дуже важливо в YAML, на відміну від JSON або XML.

YAML також підтримує такі типи даних, як символи, рядки, цілі числа, плаваючі значення та колекції, такі як масиви, списки, які складаються з основних типів даних.

Типи даних у YAML

Давайте розглянемо приклад YAML нижче:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Перший тип даних є логічним, де він може мати два значення: true або false. Значення GPA є плаваючою комою. YAML також підтримує нульовий тип даних, як у нас для «Проблеми». Значення «Name» — це рядок, який потрібно взяти в подвійні або одинарні лапки. YAML також підтримує багаторядковий рядок і багаторядковий рядок як єдиний для зручності читання.

Багаторядкові та однорядкові рядки

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Символ > дозволяє записувати один рядок у декілька рядків. Фактично речення є однорядковим описом, хоча ми маємо кілька рядків.

  Що робить «чип безпеки» Apple T2 у вашому Mac?

Ми також можемо мати кілька рядків, якщо використовуємо | дозволений символ, як:

About: |

 This is a multiline string

 And will be printed line wise.

Список

Списки дуже важливі в YAML.

Приклад списку наведено нижче.

---

- apple

- banana

- mango

Нижче показано відображення зі скаляра на списки, що дуже важливо для більшості конфігураційних файлів.

---

Fruits:

 Apples

 Banana

 Guava 

Для зіставлення скаляра зі списком потрібне вкладення. Ми також можемо мати кілька вкладених списків, як показано в прикладі нижче.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Тут автомобілі вкладено в автомобілі, а Hyundai вкладено в автомобілі. Це приклад багаторазового вкладення. Ми можемо мати кілька вкладень скільки завгодно.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML також надає символи & і * як прив’язки та посилання на прив’язку, щоб уникнути дублювання. Вони необхідні у конфігураційних файлах таких фреймворків, як Ruby on Rails, щоб зменшити файл YAML.

Дивіться приклад нижче

<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span>
    <span class="hljs-attr">name:</span> <span class="hljs-string">"John"
</span>    age: 18
profession: engineer

<< : * details

що еквівалентно:

profession: engineer

name: "John"

age: 18

YAML на Python

Python підтримує YAML, включаючи деякі модулі, такі як ruamel і pyyaml. Почніть із встановлення pyyaml

pip встановити pyyaml

Для підручника створіть файл із іменем details.yaml

name: "john"

age:18

gender: male

Створіть інший файл під назвою feed.yaml із таким вмістом:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Почнемо з читання файлу details.yaml

import yaml

with open('details.yaml') as f:
    
    data = yaml.load(f, Loader=yaml.FullLoader)
    print(data)

Після запуску файлу details.py ми отримуємо наступний результат

 $ python details.py
{'name': "john", 'age': 18, 'gender': male}
import yaml

with open(r'feed.yaml') as file:
    # The FullLoader parameter handles the conversion from YAML
    # scalar values to Python the dictionary format
    fruits_list = yaml.load(file, Loader=yaml.FullLoader)

    print(fruits_list)

Запис YAML у файли на Python

import yaml

dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']},
{'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}]

with open(r'E:data.yaml', 'w') as file: #create a new yaml file 
    data = yaml.dump(dict_file, file)

Реалізація YAML у Node.js

Node.js — це мова обробки на стороні сервера, і серіалізація даних має величезне значення в процесі розробки.

  Виправити помилку, що не обробляється в CoD Black Ops 2

Для нашого підручника розглянемо такий файл example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

У нас є доступна бібліотека npm для Node.js під назвою js-yaml. Почнемо з встановлення модуля

npm install js-yaml

Потім ми використовуємо модуль js-yaml у нашому файлі.

const yaml = require('js-yaml'); //initialize js-yaml
const fs   = require('fs'); //initialize filestream

try {
  const result = yaml.load(fs.readFileSync('example.yml', 'utf8'));
  console.log(result);
} catch (e) {
  console.log(e); //catch exception
}

Висновок

У сучасних структурах програмування та програмах, де дані зберігаються або розповсюджуються, YAML стає все більш поширеним у файлах конфігурації. YAML націлений на багато тих самих комунікаційних програм, що й розширювана мова розмітки (XML), але має мінімальний синтаксис, який свідомо відрізняється від XML.

Файли YAML можна створювати для фіксованих структур даних за допомогою команд друку, які записують як дані, так і конкретне оформлення YAML. Однак виділений випромінювач YAML є кращим для скидання різних або складних ієрархічних даних. Подібним чином, за допомогою регулярних виразів базові файли YAML (наприклад, пари ключ-значення) легко аналізуються.