Introducere în YAML pentru începători

Introducere în YAML: Un ghid pentru începători

Dacă activezi în dezvoltarea de API-uri, este foarte probabil să fi întâlnit YAML, chiar dacă JSON este instrumentul tău principal pentru serializarea datelor. YAML, cu sintaxa sa clară și prietenoasă, este o resursă valoroasă pe care merită să o adaugi în arsenalul tău de dezvoltator.

Acest articol te va ghida prin elementele de bază ale YAML, oferindu-ți o înțelegere solidă a modului în care funcționează și a beneficiilor pe care le oferă.

Ce este serializarea datelor?

Atunci când dorești să transmiți o structură de date sau un obiect prin rețele, cum ar fi internetul, trebuie să o transformi într-un format special. Acest proces, cunoscut sub numele de serializare, este crucial în lumea web. Un exemplu comun este transferul datelor din baze de date către aplicații web.

Printre formatele populare de serializare se numără JSON, YAML și XML. Aici ne vom concentra pe YAML, oferindu-ți la final o înțelegere clară a acestui format.

De ce să alegi YAML?

YAML, un acronim recursiv pentru „YAML Ain’t Markup Language,” este un format de serializare a datelor care pune accent pe lizibilitate. Dacă lucrezi cu fișiere de configurare care trebuie să fie ușor de înțeles de oameni, YAML este o alegere excelentă. Deși nu înlocuiește complet JSON sau XML, care își păstrează utilitatea în anumite contexte, învățarea YAML este o investiție valoroasă.

Un alt avantaj al YAML este suportul său pentru diverse tipuri de date, precum cazuri, matrice, dicționare, liste și scalari. De asemenea, are o compatibilitate bună cu limbaje populare ca JavaScript, Python, Ruby și Java.

YAML folosește doar spații pentru indentare și este sensibil la majuscule și minuscule. Tab-urile nu sunt universal acceptate. Fișierele YAML au extensia .yaml.

Sintaxa de bază YAML

Fiecare fișier YAML începe cu ---, care marchează debutul documentului. În dezvoltarea de API-uri, funcția de mapare a YAML este deosebit de importantă.

Exemple de mapare YAML:

---
nume: Ion
elev: da
medie: 9.52
  

Maparea are sintaxa cheie: valoare. Observă că spațiile sunt esențiale în YAML, spre deosebire de JSON sau XML.

YAML acceptă diverse tipuri de date, precum caractere, șiruri, numere întregi, valori flotante și colecții ca matrice și liste, construite din aceste tipuri de date fundamentale.

Tipuri de date în YAML

Exemplu de YAML cu diverse tipuri de date:

---
sex_masculin: fals
medie: 9.75
probleme: nul
nume: "ANDREI"
varsta: 17
  

Aici, vedem tipul boolean (fals), număr flotant (9.75), nul (nul), șir ("ANDREI") și întreg (17). YAML suportă șiruri pe mai multe linii, atât ca o singură linie logică, cât și ca linii multiple pentru lizibilitate.

Șiruri de caractere pe o singură linie și pe mai multe linii

Exemplu de șir pe mai multe linii:

---
despre_mine: >
  Salut, sunt Ana
  din București și îmi place să
  citesc.
  

Simbolul > permite scrierea unui șir pe mai multe linii, care este interpretat ca o singură linie logică. Pentru a păstra structura liniilor, se folosește simbolul |:

despre_mine: |
  Acesta este un șir
  pe mai multe linii
  care va păstra formatarea.
  

Liste în YAML

Listele sunt elemente esențiale în YAML.

Exemplu de listă simplă:

---
- mar
- banana
- portocala
  

Maparea de la scalar la liste este importantă pentru fișierele de configurare:

---
fructe:
  - mar
  - banana
  - guava
  

Indentarea este esențială pentru maparea scalară la liste. De asemenea, se pot crea liste imbricate:

masini:
  marca:
    - Dacia
    - Renault
    - Ford
  

Aici, mărcile sunt imbricate sub categoria „masini”, iar Dacia, Renault și Ford sub „marca”. Se pot adăuga mai multe niveluri de imbricare.

materii:
  inginerie:
    inginerie_mecanica:
      - proiectare
      - automobile
      - control
    inginerie_civila:
      - structuri
      - hidroenergie
  arte:
    - medievala
    - moderna
    - pictura
  

YAML utilizează simbolurile & și * pentru ancore și referințe, evitând duplicarea, utilă în configurări, de exemplu, în Ruby on Rails.

Exemplu de folosire a ancorelor:

detalii: &detalii
  nume: "Maria"
  varsta: 22
profesie: arhitect
<< : *detalii
  

Acesta este echivalent cu:

profesie: arhitect
nume: "Maria"
varsta: 22
  

YAML și limbaje de programare

YAML în Python

Python suportă YAML prin module ca ruamel și pyyaml. Pentru a începe, instalează pyyaml:

pip install pyyaml

Creează un fișier date_personale.yaml:

nume: "Ana"
varsta: 25
sex: feminin
  

Și un alt fișier, preferinte.yaml:

sporturi:
  - fotbal
  - baschet
  - tenis
---
tari:
  - Romania
  - Franta
  - Spania
  

Pentru a citi date_personale.yaml, folosește:

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

Rezultatul va fi:

{'nume': 'Ana', 'varsta': 25, 'sex': 'feminin'}
  

Pentru a citi preferinte.yaml:

import yaml
with open('preferinte.yaml') as file:
  preferinte = yaml.load(file, Loader=yaml.FullLoader)
  print(preferinte)
  

Scrierea în YAML cu Python

import yaml
date = [{'sporturi' : ['handbal', 'volei', 'inot', 'atletism', 'baschet']},
        {'tari' : ['Italia', 'Germania', 'Japonia', 'Canada', 'Australia']}]
with open('date_noi.yaml', 'w') as file:
  yaml.dump(date, file)
  

YAML în Node.js

În Node.js, serializarea datelor este esențială. Folosim modulul js-yaml.

Pentru a începe, instalează modulul:

npm install js-yaml

Creează un fișier exemplu.yaml:

nume: Andrei
varsta: 20
hobby-uri:
  hobby1: Ciclism
  hobby2: Drumetii
  hobby3: Inot
job:
  - Student
  - Programator
  

Folosește acest cod Node.js:

const yaml = require('js-yaml');
const fs = require('fs');
try {
  const rezultatul = yaml.load(fs.readFileSync('exemplu.yaml', 'utf8'));
  console.log(rezultatul);
} catch (e) {
  console.log(e);
}
  

Concluzie

YAML devine tot mai popular în fișierele de configurare din cadrul aplicațiilor moderne. Deși are multe aplicații comune cu XML, YAML se distinge prin sintaxa sa simplă.

YAML se pretează atât la structuri de date fixe create prin comenzi de tipărire, cât și la date ierarhice complexe, unde un parser dedicat este recomandat. Chiar și fișierele de bază YAML, cu structuri cheie-valoare, pot fi analizate ușor cu expresii regulate.