Ievads YAML iesācējiem

Ja esat izstrādātājs, kas raksta API, iespējams, esat saskāries ar YAML, lai gan jūsu galvenais serializācijas rīks varētu būt JSON.

YAML ir sava draudzīgā sintakse, un tā ir ērta valoda, ko pievienot savam izstrādes arsenālam.

Apgūsim YAML pamatus.

Datu serializācija

Ikreiz, kad vēlaties nosūtīt kādu datu struktūru vai objektu pa datortīkliem, piemēram, internetu, jums tas ir jāpārvērš īpašā formātā, lai to izlasītu un saglabātu. Process ir plaši pazīstams kā serializācija, un tam ir milzīga nozīme tīmeklī. Izplatīts serializācijas lietošanas piemērs ir datu nolasīšana no datu bāzēm un pārsūtīšana tīmeklī.

Daži serializācijas veidojumi ietver JSON, YAML, XML.

Šajā rakstā mēs runājam par YAML, un raksta beigās jūs varēsiet strādāt ar YAML, un jums būs skaidrs ievads par YAML.

Kas ir YAML, un kā tas man sniedz labumu?

YAML ir datu serializācijas formāts, kas apzīmē YAML nav iezīmēšanas valoda.

Galvenā YAML izmantošanas priekšrocība ir lasāmība un rakstāmība. Ja jums ir konfigurācijas fails, kuru cilvēkiem ir jābūt vieglāk lasāmam, labāk ir izmantot YAML. YAML nav pilnīga JSON aizstāšana, jo arī JSON un XML ir savas vietas; tomēr ir noderīgi mācīties YAML.

Vēl viens YAML ieguvums ir dažādu datu tipu atbalsts, piemēram, gadījumi, masīvi, vārdnīcas, saraksti un skalāri. Tam ir labs atbalsts populārākajām valodām, piemēram, JavaScript, Python, Ruby, Java utt.

  5 rīki, lai skenētu infrastruktūru kā ievainojamību kodu

YAML atbalsta tikai atstarpes, un tas ir reģistrjutīgs, kā arī atstarpes jutīgs. Cilnes netiek pieņemtas vispārēji. YAML failam ir .yaml paplašinājums.

Pamata YAML sintakse

Katrs YAML sākas ar — kas apzīmē YAML faila sākumu.

Veidojot API, mūs interesē YAML nodrošinātā funkcija, kas pazīstama kā kartēšana.

Šie piemēri parāda kartēšanas piemēru YAML.

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

Kartēšanas sintakse ir atslēga: vērtība. (Ņemiet vērā vietu, jo tā ir ļoti svarīga YAML atšķirībā no JSON vai XML.

YAML atbalsta arī datu tipus, piemēram, rakstzīmes, virknes, veselus skaitļus, peldošās vērtības un kolekcijas, piemēram, masīvus, sarakstus, kas tiek veidoti no pamata datu tipiem.

Datu tipi YAML

Apskatīsim tālāk redzamo YAML piemēru:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Pirmais datu tips ir Būla vērtība, kur tam var būt divas vērtības: patiesa vai nepatiesa. GPA vērtība ir peldošā komata vērtība. YAML atbalsta arī nulles datu tipu, kā tas ir “Problēmas”. Vērtība “Name” ir virkne, kas jāliek pēdiņās dubultpēdiņās vai vienpēdiņās. YAML atbalsta arī daudzrindu virkni un vairāku rindu virkni kā vienu lasāmības nodrošināšanai.

Daudzrindu un vienas rindas virknes

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

Simbols > ļauj rakstīt vienas rindas virkni vairākās rindās. Teikums faktiski ir vienas rindiņas apraksts, lai gan mums ir vairākas rindiņas.

Mums var būt arī vairākas rindu virknes, ja izmantojam | simbols kā atļauts:

About: |

 This is a multiline string

 And will be printed line wise.

Saraksts

Saraksti ir ļoti svarīgi YAML.

  9 Baznīcas prezentācijas programmatūra, lai nodrošinātu vislabākos pakalpojumus

Tālāk ir sniegts saraksta piemērs.

---

- apple

- banana

- mango

Tālāk ir parādīta kartēšana no skalāra uz sarakstiem, kas ir ļoti svarīga lielākajai daļai konfigurācijas failu.

---

Fruits:

 Apples

 Banana

 Guava 

Ligzdošana ir nepieciešama, lai skalāru kartētu uz sarakstu. Mums var būt arī vairāki ligzdoti saraksti, kā parādīts tālāk esošajā piemērā.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Šeit automašīnas ir ievietotas automašīnās, un Hyundai ir ievietotas automašīnās. Šis ir vairāku ligzdošanas piemērs. Mums var būt vairākas ligzdošanas tik daudz, cik mēs vēlamies.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML nodrošina arī & un * simbolus kā enkurus un atsauces uz enkuru, lai izvairītos no dublēšanās. Tie ir būtiski konfigurācijas failos tādos ietvaros kā Ruby on Rails, lai samazinātu YAML failu.

Skatiet tālāk redzamo piemēru

<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

kas ir līdzvērtīgs:

profession: engineer

name: "John"

age: 18

YAML Python

Python atbalsta YAML, tostarp dažus moduļus, piemēram, ruamel un pyyaml. Sāciet ar pyyaml ​​instalēšanu

pip install pyyaml

Apmācībai izveidojiet failu ar nosaukumu details.yaml

name: "john"

age:18

gender: male

Izveidojiet citu failu ar nosaukumu feed.yaml ar šādu saturu:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Sāksim, izlasot faila detaļas.yaml

import yaml

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

Pēc faila details.py palaišanas mēs iegūstam šādu izvadi

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

YAML rakstīšana failos 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)

YAML ieviešana pakalpojumā Node.js

Node.js ir servera puses apstrādes valoda, un datu serializācijai ir milzīga nozīme izstrādes procesā.

  Kāpēc troksni slāpējošām austiņām sāp manas ausis?

Mūsu apmācībai aplūkosim šādu failu example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Mums ir pieejama npm bibliotēka, kas tiek saukta par Node.js js-yaml. Sāksim ar moduļa instalēšanu līdz

npm install js-yaml

Pēc tam savā failā izmantojam moduli 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
}

Secinājums

Mūsdienu programmēšanas sistēmās un lietojumprogrammās, kurās tiek glabāti vai izplatīti dati, YAML kļūst arvien izplatītāks konfigurācijas failos. YAML mērķauditorija ir daudz no tām pašām saziņas lietojumprogrammām kā paplašināmā iezīmēšanas valoda (XML), taču tai ir minimāla sintakse, kas apzināti atšķiras no XML.

YAML failus var izveidot fiksētām datu struktūrām, izmantojot drukas komandas, kas ieraksta gan datus, gan YAML īpašo dekorāciju. Tomēr dažādu vai sarežģītu hierarhisku datu izvadīšanai ir vēlams īpašs YAML emitētājs. Līdzīgi ar regulārām izteiksmēm pamata YAML faili (piemēram, atslēgu un vērtību pāri) tiek viegli parsēti.