allt
Företag
datavetenskap
design
utveckling
vår resa
Strategimönster
Tack! Din inlämning har mottagits!
Hoppsan! Något gick fel när du skickade in formuläret.
Tack! Din inlämning har mottagits!
Hoppsan! Något gick fel när du skickade in formuläret.
Alex Gamela

februari 25, 2024

Min läsning

YAML vs JSON: Vad är skillnaden?

JSON mot YAML är två populära format för datautbyte mellan olika applikationer och språk, även känd som serialisering av data.

De är lika i funktion och funktioner: de representera dataobjekt och strukturerar och använder en enkel syntax som underlättar läsbarhet och redigerbarhet.

Men skillnader i design påverkar deras användningsområde. Denna översikt över YAML vs JSON visar deras huvudfunktioner och jämför dem för att hjälpa dig att göra rätt val för ditt projekt.

blå pil till vänster
Imaginary Cloud-logotyp

Vad är JSON

JSON betyder JavaScript-objektnotation. Som du kanske misstänker med namnet härrör JSON från JavaScript-dataformat. Det är en öppen standard, lätt, textbaserat format med begränsade datatyper. Dess korta syntax och enkla struktur gör det mycket lätt att läsa.

Det används för att skicka data till servern och från server till klient, som ett kuvert där data bifogas och skickas tillbaka och framåt mellan korrespondenter.

Det uppskattas mycket av programmerare som använder det i mobilappar, databastjänster som MongoDB eller Kubernetes och användarinteraktioner, eftersom det är ett mer användarvänligt alternativ till XML. Enkelheten och hastigheten på bearbetningen som JSON erbjuder och dess höga kompatibilitet med alla system gör det till ett av de mest populära formaten som används idag.

JSON-historien

Enligt JSONs utvecklare, Douglas Crockford, ett språk som använde samma principer användes redan på Netscape 1996, men JSON blev mainstream som en etablerad syntax först 2001.

Det är en resurs för Android-teknik, REST-API eller någon situation där data skickas från en server till en webbsida. Det är språkoberoende, vilket innebär att det kan användas med vilket programmeringsspråk som helst. Och en stor del av vår onlineupplevelse förlitar sig på det.

Tekniska specifikationer

Vilka är de definierande funktionerna i ett JSON-dokument? JSON-filtillägg definieras som.json. Den använder universella datastrukturer och ett begränsat urval av datatyper. Dess enkla syntax använder konventioner som är bekanta för programmerare av C-familjen av språk, som C, C ++, C #, Java, JavaScript, Perl, Python, etc. Som officiell JSON-webbplats förklarar:

”En objekt är en oordnad uppsättning namn/värdepar. Ett objekt börjar med {vänsterstag och slutar med } höger stag. Varje namn följs av :kolon, och namn/värdeparen är åtskilda av , kommatecken.”

Datatyper som används av JSON

  • Strängar
  • Siffror
  • Objektet
  • Arrayer
  • Boolesk (sant/falskt)
  • Nullvärden

Syntaxen

JSONs syntaxregler är enkla.

  • Rotnoden måste vara en matris eller ett objekt.
  • Data betecknas som namn/värdepar.
  • Dataposter separeras med kommatecken.
  • Objekt är begränsade mellan lockiga parenteser.
  • Fyrkantiga parenteser innehåller matriser.
  • Objekt kan ha matrisobjekt för att skapa listor.
  • Den använder citat runt namn och värden, som är åtskilda av ett kolon.

JSON-exempel

Låt oss titta på ett JSON-exempel, med hjälp av lite information om det berömda heavy metal-bandet Metallica.


Som du kan se avgränsar lockiga parenteser både objektet och matriserna. Alla objekt citeras och attributnamnet separeras från värdet med ett kolon. Ett komma används för att separera namnvärde-parningar.

Listor definieras med fyrkantiga parenteser, där matrisattributen också separeras med kommatecken.

Fördelar med JSON

  • Dess kompakta syntax gör JSON mycket läsbar för människor.
  • Enkel syntax med begränsad markering.
  • Snabb tolkning av system och språk.
  • Det kan användas av de flesta system och språk.

Nackdelar med JSON

  • Begränsade datatyper: accepterar endast strängar, siffror, JSON-objekt, array, boolesk och null.
  • Accepterar inte: namnutrymme, kommentar eller attribut.
  • JSONs struktur är tänkt att vara enkel, så den kanske inte stöder komplexa konfigurationer på egen hand.

blå pil till vänster
Imaginary Cloud-logotyp

Vad är YAML

YAML brukade betyda Ännu ett Markup LanguageMen den innebörden ändrades till YAML är inte markeringsspråk att uttrycka sitt datafokus över ett dokumentfokus. Förkortningar åt sidan, YAML är ett mycket läsbart, lättviktigt format, som vanligtvis används för att lagra konfigurationsinformation för DevOps-verktyg som ElasticSearch, Hamnarbetare, Kubernetes, Prometheus, och Ansibel.

Som det står på den officiella hemsidan, även skrivet i YAML-format:

YAML är ett människovänligt dataserialiseringsspråk för alla programmeringsspråk.

Det är ett dataserialiseringsspråk, men det används också ofta för att skriva konfigurationsfiler. Vi kommer att titta på YAML genom dataserialiseringsprismet.

YAML: s historia

YAML publicerades första gången 2001. De grundande medlemmarna i YAML är IngyDotNet, Clark Evans och Oren Ben-Kiki, som gick samman för att skapa ett enklare format än XML. Du kan läsa berättelsen från ett förstahandsperspektiv. Sedan dess har det blivit en arbetshäst för utvecklare överallt.

Tekniska specifikationer

YAML är skrivet i ett mycket tydligt mänskligt läsbart format, med den extra fördelen att stödja kommentarer, vilket gör det superenkelt att redigera. Sedan det är en superset av JSON, en giltig YAML-fil kan innehålla JSON-objekt. Den är lämplig för att stödja komplexa datatyper, med förmågan att omsluta objekt på flera nivåer. Detta gör det mindre vänligt att använda med vissa tekniker.

Datatyper

YAML accepterar samma datatyper som JSON, den största skillnaden är möjligheten att stödja datumattribut.

  • Strängar
  • Siffror
  • Booleska
  • Datum och tidsstämplar
  • Sekvenser
  • Kapslade värden
  • Nullvärden

Syntaxen

Frånvaron av parenteser och citat för de flesta funktioner gör läsningen mer naturlig. Även de oinitierade får en snabb förståelse för vad som ska hända. YAML: s syntax är dess styrka men också en källa för valideringsproblem om vi inte uppmärksammar strecksatser och rymdpositioner.

  • Använder nyckelvärde-par, åtskilda med kolon.
  • Fjädrar är inte inneslutna inom parentes.
  • Indragningar används för att definiera datahierarki.
  • Listor börjar med bindestreck.
  • Tillåter kommentarer genom att föregå dem med ett #.
  • Mellanslag före attribut är viktiga.
  • Pipe Character (|) tillåter multilinjiga strängar; tecknet ”större än” (>) gör att multilinjiga strängar kan läsas som en enda rad.
  • YAML kan referera till andra dataobjekt genom att använda ”&”.

YAML-exempel

Se nu hur samma data som vi använde ovan för JSON ser ut i YAML-format:


På ett första intryck ser YAML bättre ut än JSON eftersom det blir av med alla parenteser och citat. Det läser inte mycket som kod utan mer som en disposition.

Fördelar med YAML

  • Mycket enkel mänsklig läsbar syntax.
  • Kompakt syntax, som använder indragning i Python-stil för att beteckna struktur.
  • Stöder skalare som int, binär, str och bool, och samlingar som map, set, par och seq.
  • YAML stöder kommentarer där JSON inte gör det. Lägg bara till en # -symbol före kommentaren.
  • Förmåga att använda komplexa datastrukturer.
  • Genom att använda symbolen ”&” kan YAML återanvända block. Detta är en av anledningarna till att den används för att beskriva infrastruktur, som Kubernetes-staplar. JSON har ingen motsvarande operation.

Nackdelar med YAML

  • Felaktig indragning eller avstånd genererar enkelt valideringsfel.
  • Den deklarativa karaktären av YAML gör felsökning svårare: Alpha-koden för Norge (NO) kan tolkas som ett booleskt värde.
  • Inga brytpunkter.
blå pil till vänster
Imaginary Cloud-logotyp

Skillnader mellan JSON och YAML

YAML och JSON är två populära språk, liknande i struktur och användbarhet. Deras skillnader i design, syntax och funktionalitet gör valet mellan dem till en fråga om syfte.

blå pil till vänster
Imaginary Cloud-logotyp

YAML vs JSON: Vilket är bättre?

När du väljer mellan JSON- eller YAML-format, följ bara funktionen: vad behöver du att de ska göra?

JSON har en snabbare leverans eftersom det fungerar perfekt som ett enkelt datautbytesformat. Men det är begränsad till de datatyper som stöds, vilket kan kräva extra resurser för att hantera datamängder med ett större antal datatypalternativ. Det är lätt att läsa när du är över parenteser och citat, vilket är en fördel eftersom de avgränsar specifika objekt, vilket minskar risken för att tolka felaktig tolkning.

EL, å andra sidan, läser nästan inte som kod. Och den matryoshka-liknande förmågan att inkludera objekt i objekt möjliggör större datakomplexitet. Nackdelen? Sådan komplexitet saktar ner analyserings- och genereringsprocessen. Men med en rad komplexa datatyper tillgängliga har den sin attraktionskraft och är ett utmärkt alternativ för att utöka de typer av information som ska göras tillgänglig.

Syftet och prioriteringen av informationen som ska levereras är också viktig, och en logisk hierarki bör definieras innan kodning påbörjas. Denna tidigare organisation kommer att definiera dokumentets struktur och hur data kommer att presenteras.

Oavsett valet handlar det om vad dina data ska göra i slutändan.

New call-to-action

Hittade den här artikeln användbar? Du kanske gillar dessa också!

blå pil till vänster
Imaginary Cloud-logotyp
blå pil till vänster
Imaginary Cloud-logotyp
blå pil till vänster
Imaginary Cloud-logotyp
blå pil till vänster
Imaginary Cloud-logotyp
blå pil till vänster
Imaginary Cloud-logotyp
blå pil till vänster
Imaginary Cloud-logotyp
blå pil till vänster
Imaginary Cloud-logotyp
Alex Gamela
Alex Gamela

Innehållsförfattare och digital medieproducent med intresse för det symbiotiska förhållandet mellan teknik och samhälle. Böcker, musik, och gitarrer är en konstant.

Läs fler inlägg av denna författare

Människor som läste det här inlägget tyckte också att dessa var intressanta:

pil vänster
pilen till höger
Dropdown caret icon