Introduksjon til YAML: Et Data Serialiseringsformat for Utviklere
Som utvikler som arbeider med API-er, er det sannsynlig at du har støtt på YAML, selv om JSON kan være ditt foretrukne serialiseringsverktøy. YAML, med sin brukervennlige syntaks, er et verdifullt tillegg til enhver utviklers verktøykasse.
La oss utforske de grunnleggende konseptene i YAML.
Data Serialisering: En Nødvendighet i Nettverkskommunikasjon
Når du skal overføre datastrukturer eller objekter over et nettverk, for eksempel internett, må disse konverteres til et spesielt format for lesing og lagring. Denne prosessen kalles serialisering og er avgjørende for dataoverføring på nettet. Et typisk eksempel er å lese data fra databaser og overføre dem via internett.
Eksempler på serialiseringsformater inkluderer JSON, YAML og XML.
Denne artikkelen vil fokusere på YAML. Etter å ha lest denne artikkelen, vil du ha en solid forståelse av YAML og være i stand til å bruke det effektivt.
Hva er YAML og Hvorfor Bør Du Lære Det?
YAML, som står for «YAML Ain’t Markup Language,» er et dataserialiseringsformat. Det som skiller YAML ut er lesbarheten og enkelheten i å skrive det. Det egner seg spesielt godt for konfigurasjonsfiler som skal være lett forståelige for mennesker. Selv om JSON og XML har sine egne bruksområder, er kunnskap om YAML likevel svært nyttig.
YAML utmerker seg også ved sin støtte for ulike datatyper, inkludert objekter, matriser, ordbøker, lister og skalarer. I tillegg har det god støtte for populære programmeringsspråk som JavaScript, Python, Ruby og Java.
I YAML er mellomrom viktig, og det skilles mellom store og små bokstaver, samt mellomrom. Tabs aksepteres ikke konsekvent. YAML-filer har filtypen .yaml.
Grunnleggende YAML Syntaks
Hver YAML-fil begynner med `—`, som markerer starten på filen.
Når vi utvikler API-er, er kartleggingsfunksjonen i YAML spesielt nyttig.
Følgende eksempler illustrerer kartlegging i YAML:
--- name: James boy: yes GPA: 3.41
Kartleggingssyntaksen er `nøkkel: verdi`. Mellomrommet er avgjørende i YAML, i motsetning til JSON og XML.
YAML støtter ulike datatyper som tegn, strenger, heltall, flytende tall og samlinger som arrays og lister, bygget opp fra disse grunntypene.
Datatyper i YAML
La oss se på et eksempel for å illustrere forskjellige datatyper i YAML:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
Eksemplet inneholder følgende datatyper: En boolsk verdi (TRUE eller FALSE), et flyttall (GPA), en NULL-verdi, en streng (NAME, som er omsluttet av doble anførselstegn), og et heltall (AGE). YAML støtter også flerlinjestrenger for økt lesbarhet.
Flerlinje- og Enkeltlinjestrenger
Man kan skrive en enkeltlinjestreng over flere linjer ved bruk av >-symbolet:
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
Denne flerlinjeskriving blir tolket som en enkelt streng. For å beholde linjeskift i strengen kan man bruke |-symbolet:
About: | This is a multiline string And will be printed line wise.
Lister i YAML
Lister er en viktig del av YAML, og her er et enkelt eksempel:
--- - apple - banana - mango
Nedenfor er et eksempel på kartlegging fra skalar til lister. Dette er vanlig i konfigurasjonsfiler:
--- Fruits: Apples Banana Guava
Nøsting er nødvendig for å mappe skalarer til lister. Man kan også ha flere nivåer av nestede lister, som vist i dette eksemplet:
Automobiles: Car: Hyundai Volkswagen Ford
Her er «Car» nestet inni «Automobiles», og «Hyundai», «Volkswagen» og «Ford» er nestet inn i «Car». Nedenfor er et mer komplekst eksempel:
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
YAML bruker `&` for ankere og `*` for å referere til disse, noe som forhindrer duplisering. Dette er spesielt nyttig i konfigurasjonsfiler i rammeverk som Ruby on Rails.
Et eksempel:
details: &details name: "John" age: 18
profession: engineer << : * details
Dette er ekvivalent med:
profession: engineer name: "John" age: 18
YAML i Python
Python har god støtte for YAML gjennom biblioteker som ruamel og pyyaml. For å starte, installer pyyaml:
pip install pyyaml
Opprett en fil med navnet `details.yaml` med følgende innhold:
name: "john" age:18 gender: male
Opprett også en fil `feed.yaml`:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
For å lese `details.yaml` i Python, bruk følgende kode:
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Dette vil gi følgende utskrift:
$ python details.py {'name': "john", 'age': 18, 'gender': male}
For å lese `feed.yaml`:
import yaml with open(r'feed.yaml') as file: fruits_list = yaml.load(file, Loader=yaml.FullLoader) print(fruits_list)
Skrive 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 i Node.js
Node.js, som en server-side plattform, har også behov for effektiv dataserialisering. Vurder filen `example.yaml`:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
For å jobbe med YAML i Node.js, bruk biblioteket js-yaml:
npm install js-yaml
Deretter kan du bruke det i koden din:
const yaml = require('js-yaml'); const fs = require('fs'); try { const result = yaml.load(fs.readFileSync('example.yml', 'utf8')); console.log(result); } catch (e) { console.log(e); }
Konklusjon
YAML blir stadig mer vanlig i konfigurasjonsfiler i moderne programmeringsrammeverk. Det er et alternativ til Extensible Markup Language (XML), men med en enklere og mer minimalistisk syntaks. YAML er ikke bare praktisk for konfigurasjonsfiler; det er også ideelt for lesing av data fra en fil, og data overføring over nettverket i mange forskjellige applikasjoner.
YAML-filer kan opprettes ved hjelp av utskriftskommandoer som både skriver dataene og YAML sin spesielle struktur. For mer komplekse data er en dedikert YAML emitter å foretrekke. Enkle YAML-filer kan også lett tolkes ved hjelp av regulære uttrykk.