Hvis du er en udvikler, der skriver API’er, er du sandsynligvis stødt på YAML, selvom dit primære serialiseringsværktøj kan være JSON.
YAML har sin egen venlige syntaks, og det er et praktisk sprog at tilføje til dit udviklingsarsenal.
Lad os lære det grundlæggende i YAML.
Indholdsfortegnelse
Data serialisering
Når du vil sende en datastruktur eller et objekt på tværs af computernetværk, f.eks. internettet, skal du omdanne det til et specielt format for at læse det og gemme det. Processen er almindeligvis kendt som serialisering og er af enorm betydning på nettet. Et almindeligt brugseksempel på serialisering er, når du læser data fra databaser og overfører dem på tværs af nettet.
Nogle serialiseringsformationer inkluderer JSON, YAML, XML.
I denne artikel taler vi om YAML, og i slutningen af artiklen vil du være i stand til at arbejde dig igennem YAMLand og få en klar introduktion til YAML.
Hvad er YAML, og hvordan gavner det mig?
YAML er et dataserialiseringsformat, der står for YAML ain’t Markup language.
Den største fordel ved at bruge YAML er læsbarhed og skrivbarhed. Hvis du har en konfigurationsfil, der skal være nemmere for mennesker at læse, er det bedre at bruge YAML. YAML er ikke en komplet erstatning af JSON, da JSON og XML også har deres pladser; ikke desto mindre er det nyttigt at lære YAML.
En anden fordel ved YAML er dens understøttelse af forskellige datatyper som sager, arrays, ordbøger, lister og skalarer. Det har god understøttelse af de mest populære sprog som JavaScript, Python, Ruby, Java osv.
YAML understøtter kun mellemrum, og det er både store og små bogstaver. Faner accepteres ikke universelt. En YAML-fil har filtypenavnet .yaml.
Grundlæggende YAML-syntaks
Hver YAML starter med — hvilket angiver starten på en YAML-fil.
Når vi opretter en API, er vi interesserede i en funktion leveret af YAML kendt som kortlægning.
De følgende eksempler viser eksemplet med kortlægning i YAML.
--- name: James boy: yes GPA: 3.41
Tilknytningssyntaksen er nøglen: værdi. (Bemærk pladsen, den er meget afgørende i YAML, i modsætning til JSON eller XML.
YAML understøtter også datatyper som tegn, strenge, heltal, flydende værdier og samlinger som arrays, lister, der er konstrueret ud fra grundlæggende datatyper.
Datatyper i YAML
Lad os se eksemplet på en YAML nedenfor:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
Den første datatype er en boolean, hvor den kan have to værdier: sand eller falsk. Værdien af GPA er floating-point. YAML understøtter også null-datatypen, som vi har for “Problemer”. Værdien af ”Navn” er en streng, der skal citeres inden for dobbelte eller enkelte anførselstegn. YAML understøtter også multiline streng og multiline streng som en enkelt for læsbarhed.
Multiline og single-line strenge
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
>-symbolet lader dig skrive en enkelt linjestreng til flere linjer. Sætningen er faktisk en enkelt linjebeskrivelse, selvom vi har flere linjer.
Vi kan også have flere linjestrenge, hvis vi bruger | symbol som tilladt:
About: | This is a multiline string And will be printed line wise.
Liste
Lister er meget vigtige i YAML.
Et eksempel på listen er givet nedenfor.
--- - apple - banana - mango
Kortlægning fra skalar til lister er vist nedenfor, hvilket er meget vigtigt for de fleste konfigurationsfiler.
--- Fruits: Apples Banana Guava
Indlejring er påkrævet for at kortlægge skalar til liste. Vi kan også have flere indlejrede lister, som vist i eksemplet nedenfor.
Automobiles: Car: Hyundai Volkswagen Ford
Her er biler indlejret inde i biler, og Hyundai er indlejret inde i biler. Dette er et eksempel på multiple nesting. Vi kan have flere rede, så meget vi vil.
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
YAML giver også & og * symboler som ankre og referencer til ankeret for at undgå duplikering. De er essentielle i konfigurationsfiler i rammer som Ruby on Rails for at gøre YAML-filen mindre.
Se eksemplet nedenfor
<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
hvilket svarer til:
profession: engineer name: "John" age: 18
YAML i Python
Python understøtter YAML, inklusive nogle moduler som ruamel og pyyaml. Start med at installere pyyaml
pip installer pyyaml
Til selvstudiet skal du oprette en fil med navnet details.yaml
name: "john" age:18 gender: male
Opret endnu en fil ved navn feed.yaml med følgende indhold:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
Lad os starte med at læse filen details.yaml
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Efter at have kørt filen details.py, får vi følgende output
$ 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 til 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 er et behandlingssprog på serversiden, og dataserialisering er af enorm betydning i udviklingsprocessen.
Til vores selvstudie, lad os overveje følgende fil eksempel.yaml:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
Vi har et tilgængeligt npm-bibliotek for Node.js kaldet js-yaml. Lad os starte med at installere modulet ved
npm install js-yaml
Vi bruger derefter js-yaml-modulet i vores 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 }
Konklusion
I moderne programmeringsrammer og applikationer, hvor data lagres eller distribueres, bliver YAML mere og mere almindeligt i konfigurationsfiler. YAML retter sig mod mange af de samme kommunikationsapplikationer som Extensible Markup Language (XML), men har en minimal syntaks, der bevidst er forskellig fra XML.
YAML-filer kan oprettes til faste datastrukturer ved hjælp af printkommandoer, der skriver både data og YAML’s særlige dekoration. En dedikeret YAML-emitter er dog at foretrække til at dumpe forskellige eller komplekse hierarkiske data. På samme måde, med regulære udtryk, analyseres grundlæggende YAML-filer (f.eks. nøgleværdi-par) let.