Якщо ви розробник, який пише 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 тощо.
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.
Символ > дозволяє записувати один рядок у декілька рядків. Фактично речення є однорядковим описом, хоча ми маємо кілька рядків.
Ми також можемо мати кілька рядків, якщо використовуємо | дозволений символ, як:
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 — це мова обробки на стороні сервера, і серіалізація даних має величезне значення в процесі розробки.
Для нашого підручника розглянемо такий файл 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 (наприклад, пари ключ-значення) легко аналізуються.