Lær YAML: Enkel guide for utviklere

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.