Dacă sunteți un dezvoltator care scrie API-uri, probabil că ați întâlnit YAML, chiar dacă instrumentul dvs. principal de serializare ar putea fi JSON.
YAML are propria sa sintaxă prietenoasă și este un limbaj util de adăugat la arsenalul tău de dezvoltare.
Să învățăm elementele de bază ale YAML.
Cuprins
Serializarea datelor
Ori de câte ori doriți să trimiteți o structură de date sau un obiect prin rețele de calculatoare, să zicem pe Internet, trebuie să îl transformați într-un format special pentru a-l citi și a-l stoca. Procesul este cunoscut sub numele de serializare și are o importanță enormă pe web. Un exemplu obișnuit de utilizare a serializării este atunci când citiți date din baze de date și le transferați pe web.
Unele formațiuni de serializare includ JSON, YAML, XML.
În acest articol, vorbim despre YAML, iar la sfârșitul articolului, veți putea să vă parcurgeți YAML și să aveți o introducere clară în YAML.
Ce este YAML și cum mă avantajează?
YAML este un format de serializare a datelor care înseamnă YAML ain’t Markup language.
Principalul avantaj al utilizării YAML este lizibilitatea și scrierea. Dacă aveți un fișier de configurare care trebuie să fie mai ușor de citit pentru oameni, este mai bine să utilizați YAML. YAML nu este o înlocuire completă a JSON, deoarece și JSON și XML își au locul; cu toate acestea, este util să înveți YAML.
Un alt beneficiu al YAML este suportul pentru diferite tipuri de date, cum ar fi cazuri, matrice, dicționare, liste și scalari. Are suport bun pentru cele mai populare limbi precum JavaScript, Python, Ruby, Java etc.
YAML acceptă doar spații și ține cont de majuscule și minuscule, precum și de spațiu. Filele nu sunt acceptate universal. Un fișier YAML are extensia .yaml.
Sintaxa YAML de bază
Fiecare YAML începe cu — ceea ce denotă începutul unui fișier YAML.
Când creăm un API, ne interesează o caracteristică oferită de YAML cunoscută sub numele de mapare.
Următoarele exemple arată exemplul de mapare în YAML.
--- name: James boy: yes GPA: 3.41
Sintaxa de mapare este cheia: valoare. (Rețineți spațiul, este foarte important în YAML, spre deosebire de JSON sau XML.
YAML acceptă, de asemenea, tipuri de date precum caractere, șiruri de caractere, numere întregi, valori flotante și colecții precum matrice, liste care sunt construite din tipuri de date de bază.
Tipuri de date în YAML
Să vedem mai jos exemplul unui YAML:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
Primul tip de date este boolean, unde poate avea două valori: adevărat sau fals. Valoarea GPA este în virgulă mobilă. YAML acceptă, de asemenea, tipul de date nul, așa cum avem pentru „Probleme”. Valoarea „Nume” este un șir care trebuie citat între ghilimele duble sau simple. YAML acceptă, de asemenea, șiruri cu mai multe linii și șiruri cu mai multe linii ca unic pentru lizibilitate.
Șiruri cu mai multe linii și cu o singură linie
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
Simbolul > vă permite să scrieți un șir de rând pe mai multe linii. Propoziția este de fapt o descriere cu o singură linie, deși avem mai multe rânduri.
De asemenea, putem avea mai multe șiruri de linii dacă folosim | simbol ca permis:
About: | This is a multiline string And will be printed line wise.
Listă
Listele sunt foarte importante în YAML.
Un exemplu de listă este dat mai jos.
--- - apple - banana - mango
Maparea de la scalar la liste este prezentată mai jos, ceea ce este foarte important pentru majoritatea fișierelor de configurare.
--- Fruits: Apples Banana Guava
Imbricarea este necesară pentru maparea scalară pe listă. De asemenea, putem avea mai multe liste imbricate, așa cum se arată în exemplul de mai jos.
Automobiles: Car: Hyundai Volkswagen Ford
Aici mașinile sunt imbricate în interiorul mașinilor, iar Hyundai este cuibărit în interiorul mașinilor. Acesta este un exemplu de cuibărire multiple. Putem avea cuibări multiple cât vrem.
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
YAML oferă, de asemenea, simboluri & și * ca ancore și referințe la ancoră pentru a evita duplicarea. Ele sunt esențiale în fișierele de configurare în cadre precum Ruby on Rails pentru a face fișierul YAML mai mic.
Vezi exemplul de mai jos
<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
care este echivalent cu:
profession: engineer name: "John" age: 18
YAML în Python
Python acceptă YAML, inclusiv unele module precum ruamel și pyyaml. Începeți prin a instala pyyaml
pip install pyyaml
Pentru tutorial, creați un fișier cu numele details.yaml
name: "john" age:18 gender: male
Creați un alt fișier denumit feed.yaml cu următorul conținut:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
Să începem prin a citi fișierul details.yaml
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
După rularea fișierului details.py, obținem următoarea ieșire
$ 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)
Scrierea YAML în fișiere în 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)
Implementarea YAML în Node.js
Node.js este un limbaj de procesare pe partea de server, iar serializarea datelor este de o importanță enormă în procesul de dezvoltare.
Pentru tutorialul nostru, să luăm în considerare următorul fișier example.yaml:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
Avem o bibliotecă npm disponibilă pentru Node.js numită js-yaml. Să începem prin a instala modulul prin
npm install js-yaml
Apoi folosim modulul js-yaml în fișierul nostru.
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 }
Concluzie
În cadrele și aplicațiile moderne de programare în care datele sunt stocate sau distribuite, YAML devine din ce în ce mai comun în fișierele de configurare. YAML vizează multe dintre aceleași aplicații de comunicare ca și Extensible Markup Language (XML), dar are o sintaxă minimă care este în mod deliberat diferită de XML.
Fișierele YAML pot fi create pentru structuri de date fixe folosind comenzi de tipărire care scriu atât datele, cât și decorarea particulară a YAML. Cu toate acestea, un emițător YAML dedicat este de preferat pentru descărcarea de date ierarhice diverse sau complexe. În mod similar, cu expresiile regulate, fișierele YAML de bază (de exemplu, perechi cheie-valoare) sunt ușor analizate.