Enten du konfigurerer en nettapplikasjon, utveksler data mellom tjenester, analyserer en regnearkseksport eller leser et API-svar, vil du møte data lagret i strukturerte tekstformater. De fire vanligste er JSON, YAML, CSV og XML.
Hvert format ble designet med forskjellige mål i tankene, og det rette valget avhenger av brukstilfellet ditt. Denne artikkelen forklarer hva hvert format er, hvordan det ser ut, når det brukes, og hvordan de sammenligner seg.
JSON — JavaScript Object Notation
JSON har blitt det dominerende datautvekslingsformatet på nettet. Til tross for navnet er det språkuavhengig og brukes overalt.
Syntakseksempel:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Nøkkelegenskaper:
- Nøkkel-verdi-par med en ren, lesbar syntaks
- Støtter strenger, tall, booleans, arrays, objekter og null
- Ingen kommentarer tillatt i standard JSON
- Streng syntaks — etterfølgende kommaer og enkle anførselstegn er feil
Vanlige brukstilfeller: REST API-er, konfigurasjonsfiler (package.json, tsconfig.json), NoSQL-databaser (MongoDB), datautveksling mellom frontend og backend.
Godt å vite. JSONs strenge syntaks er både en styrke og en svakhet. Den gjør parsing pålitelig og entydig, men det betyr også at et enkelt manglende komma eller et ekstra etterfølgende komma vil ødelegge hele filen.
YAML — YAML Ain't Markup Language
YAML ble designet for å være det mest menneskelesbare dataserialiseringsformatet. Det bruker innrykk i stedet for parenteser og er spesielt populært for konfigurasjonsfiler.
Syntakseksempel:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Nøkkelegenskaper:
- Innrykksbasert struktur (ingen parenteser eller klammer)
- Støtter kommentarer med
# - Støtter alle JSON-datatyper pluss flere (datoer, flerlinjestrenger)
- Mellomromsfølsom — feil innrykk ødelegger filen
Vanlige brukstilfeller: Docker Compose-filer, Kubernetes-manifester, CI/CD-pipelines (GitHub Actions, GitLab CI), Ansible-playbooks, Hugo/Jekyll-konfigurasjon.
YAML er et supersett av JSON, noe som betyr at ethvert gyldig JSON-dokument også er gyldig YAML. Men YAMLs fleksibilitet kan være et tveegget sverd — dens implisitte typekonvertering (for eksempel at yes tolkes som en boolean true, eller at 3.10 blir 3.1) har forårsaket mange subtile feil.
CSV — Comma-Separated Values
CSV er det enkleste strukturerte dataformatet. Det lagrer tabelldata som ren tekst, der hver linje er en rad og verdier skilles av kommaer (eller noen ganger semikolon, tabulatorer eller andre skilletegn).
Syntakseksempel:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Nøkkelegenskaper:
- Ekstremt enkelt — bare tekst med skilletegn
- Ingen datatyper — alt er en streng
- Ingen standardmåte å representere nestede data
- Ingen offisiell universell standard (RFC 4180 finnes, men følges ikke universelt)
- Filstørrelser er veldig små
Vanlige brukstilfeller: Regnearkseksporter, databaseimporter/-eksporter, dataanalyse (pandas, R), enkel datautveksling, loggfiler.
CSVs enkelhet er dens største styrke og største begrensning. Den er perfekt for flate, tabellbaserte data, men kan ikke representere hierarkiske strukturer. Kanttilfeller (kommaer i verdier, flerlinjefelter, tegnkodingsproblemer) gjør parsing mer kompleks enn det først ser ut.
XML — Extensible Markup Language
XML var det dominerende datautvekslingsformatet før JSON tok over. Det bruker en tag-basert syntaks lik HTML og støtter komplekse funksjoner som skjemaer, navnerom og transformasjoner.
Syntakseksempel:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Nøkkelegenskaper:
- Tag-basert struktur med åpnings- og lukkings-tagger
- Støtter attributter, navnerom, skjemaer (XSD) og transformasjoner (XSLT)
- Støtter kommentarer
- Svært omfangsrik sammenlignet med andre formater
- Ekstremt veldefinert standard med streng validering
Vanlige brukstilfeller: SOAP-webtjenester, bedriftsintegrasjoner, dokumentformater (DOCX, SVG, RSS), konfigurasjonsfiler i Java/.NET-økosystemer, offentlig og finansiell datautveksling.
XML er mer omfangsrik enn JSON eller YAML, men dens skjemavalideringsfunksjoner gjør den uvurderlig i sammenhenger der dataintegritet og formelle kontrakter mellom systemer er kritisk.
Sammenligning side om side
| Funksjon | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Menneskelesbarhet | God | Utmerket | God (tabelform) | Middels |
| Omfang | Lavt | Lavt | Svært lavt | Høyt |
| Kommentarer | Nei | Ja | Nei | Ja |
| Nestede data | Ja | Ja | Nei | Ja |
| Datatyper | Grunnleggende | Rike | Ingen (alt er strenger) | Via skjema |
| Skjemavalidering | JSON Schema | Ingen standard | Nei | XSD |
| Filstørrelse | Liten | Liten | Minst | Stor |
| Parsinghastighet | Rask | Moderat | Rask | Moderat |
| Hoveddomene | Web-API-er | DevOps-konfig. | Data/regneark | Bedrifter |
Når du bør bruke hva
- Velg JSON når du bygger web-API-er, lagrer konfigurasjon for JavaScript/TypeScript-prosjekter, eller utveksler data mellom tjenester. Det er standardvalget for de fleste moderne applikasjoner.
- Velg YAML når du skriver konfigurasjonsfiler som mennesker ofte skal lese og redigere. Lesbarheten og kommentarstøtten gjør det ideelt for DevOps og infrastructure-as-code.
- Velg CSV når du jobber med tabelldata, importerer/eksporterer fra regneark eller databaser, eller når filstørrelsen må være minimal. Unngå det for alt hierarkisk.
- Velg XML når du jobber med bedriftssystemer, SOAP-API-er, eller sammenhenger som krever formell skjemavalidering. Det er også riktig valg når du trenger dokumentorientert markup (som SVG eller RSS).
Konvertering mellom formater
Konvertering mellom disse formatene er en vanlig oppgave. Et par ting å huske:
- JSON til YAML (og omvendt) er vanligvis tapsfritt siden YAML er et supersett av JSON.
- CSV til JSON/YAML fungerer godt for flate data, men krever beslutninger om struktur for nestet output.
- XML til JSON kan miste informasjon (attributter, navnerom, rekkefølge) fordi JSON ikke har tilsvarende konsepter.
- Ethvert format til CSV fungerer bare hvis dataene er flate eller kan flates ut meningsfullt.
Tips. Når du konverterer mellom formater, bør du alltid verifisere resultatet. Automatiske konverteringer kan stille miste data, spesielt med XML-attributter, YAML-typekonvertering eller CSV-tegnkodingskanttilfeller.
Gå videre
ToolK.io tilbyr gratis verktøy for å konvertere mellom JSON, YAML, CSV og XML, formatere og validere dataene dine, og utforske relaterte veiledninger for å jobbe med strukturerte data i prosjektene dine.
