Introduktion till YAML för nybörjare

Om du är en utvecklare som skriver API:er har du förmodligen stött på YAML även om ditt primära serialiseringsverktyg kan vara JSON.

YAML har sin egen vänliga syntax, och det är ett praktiskt språk att lägga till i din utvecklingsarsenal.

Låt oss lära oss grunderna i YAML.

Data serialisering

När du vill skicka någon datastruktur eller ett objekt över datornätverk, t.ex. Internet, måste du göra om det till ett speciellt format för att läsa det och lagra det. Processen är allmänt känd som serialisering och är av enorm betydelse på webben. Ett vanligt användningsexempel på serialisering är när man läser data från databaser och överför dem över webben.

Vissa serialiseringsformationer inkluderar JSON, YAML, XML.

I den här artikeln pratar vi om YAML, och i slutet av artikeln kommer du att kunna arbeta dig igenom YAMLand med en tydlig introduktion till YAML.

Vad är YAML och hur gynnar det mig?

YAML är ett dataserialiseringsformat som står för YAML ain’t Markup language.

Den största fördelen med att använda YAML är läsbarhet och skrivbarhet. Om du har en konfigurationsfil som behöver vara lättare för människor att läsa, är det bättre att använda YAML. YAML är inte en fullständig ersättning av JSON eftersom JSON och XML också har sina platser; ändå är det användbart att lära sig YAML.

En annan fördel med YAML är dess stöd för olika datatyper som fall, arrayer, ordböcker, listor och skalärer. Den har bra stöd för de mest populära språken som JavaScript, Python, Ruby, Java, etc.

YAML stöder endast mellanslag, och det är skiftlägeskänsligt såväl som mellanslagskänsligt. Flikar accepteras inte universellt. En YAML-fil har filändelsen .yaml.

Grundläggande YAML-syntax

Varje YAML börjar med — vilket anger början på en YAML-fil.

När vi skapar ett API är vi intresserade av en funktion som tillhandahålls av YAML, känd som kartläggning.

Följande exempel visar exemplet på kartläggning i YAML.

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

Mappningssyntaxen är nyckel: värde. (Observera utrymmet, det är väldigt viktigt i YAML, till skillnad från JSON eller XML.

YAML stöder också datatyper som tecken, strängar, heltal, flytande värden och samlingar som arrayer, listor som är konstruerade från grundläggande datatyper.

Datatyper i YAML

Låt oss se exemplet på en YAML nedan:

---

MALE: FALSE

GPA: 3.61

ISSUES: NULL

NAME: “BIGYAN”

AGE: 16

Den första datatypen är en boolean, där den kan ha två värden: sant eller falskt. Värdet på GPA är flyttal. YAML stöder också nolldatatypen som vi har för ”Problem”. Värdet på ”Namn” är en sträng som måste citeras inom dubbla eller enkla citattecken. YAML stöder också flerradssträng och flerradssträng som en enda för läsbarhet.

Flerradiga och enradiga strängar

---

About: >

 Hello this is Ryan

 From Alabama and I like to

 Play soccer.

>-symbolen låter dig skriva en enstaka radsträng till flera rader. Meningen är faktiskt en beskrivning av en rad även om vi har flera rader.

Vi kan också ha flera radsträngar om vi använder | symbol som tillåts:

About: |

 This is a multiline string

 And will be printed line wise.

Lista

Listor är mycket viktiga i YAML.

Ett exempel på listan ges nedan.

---

- apple

- banana

- mango

Mappning från skalär till listor visas nedan, vilket är mycket viktigt för de flesta konfigurationsfiler.

---

Fruits:

 Apples

 Banana

 Guava 

Kapsling krävs för att mappa skalär till lista. Vi kan också ha flera kapslade listor, som visas i exemplet nedan.

Automobiles:

 Car:

     Hyundai

     Volkswagen

     Ford

Här är bilar kapslade inuti bilar, och Hyundai är kapslade inuti bilar. Detta är ett exempel på flera häckande. Vi kan ha flera häckningar så mycket vi vill.

Subjects:

     Engineering:

       Mechanical engineering:

         Design and manufacture

         Automobile

         Control and Design

       Civil engineering:

         Structural engineering

         Hydropower

       Arts:

         Medieval

         Modern

         Painting

YAML tillhandahåller också & och *-symboler som ankare och referenser till ankaret för att undvika dubbelarbete. De är viktiga i konfigurationsfiler i ramverk som Ruby on Rails för att göra YAML-filen mindre.

Se exemplet nedan

<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

vilket motsvarar:

profession: engineer

name: "John"

age: 18

YAML i Python

Python stöder YAML, inklusive vissa moduler som ruamel och pyyaml. Börja med att installera pyyaml

pip installera pyyaml

Skapa en fil med namnet details.yaml för handledningen

name: "john"

age:18

gender: male

Skapa en annan fil med namnet feed.yaml med följande innehåll:

sports:

 football
 basketball
 cricket
 baseball

---
countries:
 Brazil
 Lithuania
 Australia
 USA

Låt oss börja med att läsa filen details.yaml

import yaml

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

Efter att ha kört filen details.py får vi följande utdata

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

Skriver YAML till filer i 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-implementering i Node.js

Node.js är ett bearbetningsspråk på serversidan och dataserialisering är av enorm betydelse i utvecklingsprocessen.

För vår handledning, låt oss överväga följande fil example.yaml:

name:John

age:18

Hobbies:

 Hobby1:Football

 Hobby2:BasketBall

 Hobby3:Hockey

Job:

-System administrator

-Programmer

Vi har ett npm-bibliotek tillgängligt för Node.js js-yaml. Låt oss börja med att installera modulen med

npm install js-yaml

Vi använder sedan js-yaml-modulen i vår fil.

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
}

Slutsats

I moderna programmeringsramverk och applikationer där data lagras eller distribueras, blir YAML allt vanligare i konfigurationsfiler. YAML riktar sig till många av samma kommunikationsapplikationer som Extensible Markup Language (XML) men har en minimal syntax som medvetet skiljer sig från XML.

YAML-filer kan skapas för fasta datastrukturer med hjälp av utskriftskommandon som skriver både data och YAML:s speciella dekoration. En dedikerad YAML-sändare är dock att föredra för att dumpa olika, eller komplexa, hierarkiska data. På liknande sätt, med reguljära uttryck, analyseras grundläggande YAML-filer (t.ex. nyckel-värdepar) lätt.