Ú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.
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ů.
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.
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).