etechblog

Úvod do YAML pro začátečníky

Pokud jste vývojář, který píše rozhraní API, pravděpodobně jste se setkali s YAML, i když vaším primárním serializačním nástrojem může být JSON.

YAML má svou vlastní přátelskou syntaxi a je to praktický jazyk, který můžete přidat do svého vývojářského arzenálu.

Pojďme se naučit základy YAML.

Serializace dat

Kdykoli chcete poslat nějakou datovou strukturu nebo objekt přes počítačové sítě, řekněme Internet, musíte je převést do speciálního formátu, abyste je mohli číst a ukládat. Tento proces je běžně známý jako serializace a má na webu obrovský význam. Běžným příkladem serializace je čtení dat z databází a jejich přenos přes web.

Některé serializační formace zahrnují JSON, YAML, XML.

V tomto článku mluvíme o YAML a na konci článku se budete moci propracovat přes YAML a budete mít jasný úvod do YAML.

Co je YAML a jaký je pro mě přínos?

YAML je formát pro serializaci dat, který znamená YAML není značkovací jazyk.

Hlavní výhodou použití YAML je čitelnost a zapisovatelnost. Pokud máte konfigurační soubor, který musí být pro lidi snadněji čitelný, je lepší použít YAML. YAML není úplnou náhradou JSON, protože JSON a XML mají také své místo; nicméně je užitečné učit se YAML.

  Jak podvrhnout uživatelského agenta Chromebooku pro weby, které nepodporují Chrome OS

Další výhodou YAML je podpora různých datových typů, jako jsou případy, pole, slovníky, seznamy a skaláry. Má dobrou podporu pro nejpopulárnější jazyky, jako je JavaScript, Python, Ruby, Java atd.

YAML podporuje pouze mezery a rozlišuje velká a malá písmena i mezery. Karty nejsou přijímány univerzálně. Soubor YAML má příponu .yaml.

Základní syntaxe YAML

Každý YAML začíná — což označuje začátek souboru YAML.

Při vytváření API nás zajímá funkce poskytovaná YAML známá jako mapování.

Následující příklady ukazují příklad mapování v YAML.

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

Syntaxe mapování je klíč: hodnota. (Všimněte si prostoru, ten je v YAML velmi důležitý, na rozdíl od JSON nebo XML.

YAML také podporuje datové typy, jako jsou znaky, řetězce, celá čísla, plovoucí hodnoty a kolekce, jako jsou pole, seznamy, které jsou vytvořeny ze základních datových typů.

Datové typy v YAML

Podívejme se na příklad YAML níže:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

První datový typ je boolean, kde může mít dvě hodnoty: true nebo false. Hodnota GPA je s pohyblivou řádovou čárkou. YAML také podporuje datový typ null, jako máme pro „Problémy“. Hodnota „Name“ je řetězec, který musí být uveden ve dvojitých nebo jednoduchých uvozovkách. YAML také podporuje víceřádkový řetězec a víceřádkový řetězec jako jeden pro čitelnost.

Víceřádkové a jednořádkové řetězce

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Symbol > umožňuje zapsat jeden řádek na více řádků. Věta je ve skutečnosti jednořádkový popis, i když máme více řádků.

  5 nejlepších aplikací pro týmovou komunikaci

Můžeme také mít více řádkových řetězců, pokud použijeme | povolený symbol:

About: |

 This is a multiline string

 And will be printed line wise.

Seznam

Seznamy jsou v YAML velmi důležité.

Příklad seznamu je uveden níže.

---

- apple

- banana

- mango

Mapování ze skalárních na seznamy je zobrazeno níže, což je velmi důležité pro většinu konfiguračních souborů.

---

Fruits:

 Apples

 Banana

 Guava 

Vnoření je vyžadováno pro mapování skaláru na seznam. Můžeme mít také více vnořených seznamů, jak ukazuje příklad níže.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Zde jsou auta vnořena do automobilů a Hyundai je vnořena do automobilů. Toto je příklad vícenásobného vnoření. Můžeme mít více hnízd, kolik chceme.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML také poskytuje symboly & a * jako kotvy a odkazy na kotvu, aby se zabránilo duplicitě. Jsou nezbytné v konfiguračních souborech v rámci, jako je Ruby on Rails, aby byl soubor YAML menší.

Viz příklad níže

<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

což je ekvivalentní:

profession: engineer

name: "John"

age: 18

YAML v Pythonu

Python podporuje YAML, včetně některých modulů jako ruamel a pyyaml. Začněte instalací pyyaml

pip install pyyaml

Pro tutoriál vytvořte soubor s názvem details.yaml

name: "john"

age:18

gender: male

Vytvořte další soubor s názvem feed.yaml s následujícím obsahem:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Začněme čtením souboru details.yaml

import yaml

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

Po spuštění souboru details.py získáme následující výstup

 $ 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)

Zápis YAML do souborů v Pythonu

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)

Implementace YAML v Node.js

Node.js je jazyk pro zpracování na straně serveru a serializace dat má v procesu vývoje obrovský význam.

  Jak se přihlásím do Amazon Chime

Pro náš tutoriál uvažujme následující soubor example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Pro Node.js máme k dispozici knihovnu npm s názvem js-yaml. Začněme instalací modulu pomocí

npm install js-yaml

V našem souboru pak použijeme modul 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
}

Závěr

V moderních programovacích rámcích a aplikacích, kde jsou data uložena nebo distribuována, se YAML stává stále běžnějším v konfiguračních souborech. YAML se zaměřuje na mnoho stejných komunikačních aplikací jako Extensible Markup Language (XML), ale má minimální syntaxi, která je záměrně odlišná od XML.

Soubory YAML lze vytvořit pro pevné datové struktury pomocí tiskových příkazů, které zapisují data i konkrétní dekorace YAML. Pro ukládání různých nebo složitých hierarchických dat je však vhodnější vyhrazený emitor YAML. Podobně s regulárními výrazy lze snadno analyzovat základní soubory YAML (např. páry klíč-hodnota).

x