Introducere în YAML pentru începători

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.

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.

  Cum să utilizați aplicația McDonald's

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.

  Remediați autentificarea Warframe eșuată Verificați-vă informațiile

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.

  Cum să gestionați setările site-ului în Chrome

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.