Uanset om du konfigurerer en webapplikation, udveksler data mellem tjenester, analyserer et regnearkseksport eller læser et API-svar, vil du støde på data gemt i strukturerede tekstformater. De fire mest almindelige er JSON, YAML, CSV og XML.
Hvert format er designet med forskellige mål for øje, og det rigtige valg afhænger af dit brugsscenarie. Denne artikel forklarer, hvad hvert format er, hvordan det ser ud, hvornår det bruges, og hvordan de sammenligner sig.
JSON — JavaScript Object Notation
JSON er blevet det dominerende dataudvekslingsformat på nettet. Trods navnet er det sproguafhængigt og bruges overalt.
Syntakseksempel:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Nøgleegenskaber:
- Nøgle-værdi-par med en ren, læsbar syntaks
- Understøtter strenge, tal, booleans, arrays, objekter og null
- Ingen kommentarer tilladt i standard JSON
- Streng syntaks — afsluttende kommaer og enkelte anførselstegn er fejl
Almindelige brugscases: REST API'er, konfigurationsfiler (package.json, tsconfig.json), NoSQL-databaser (MongoDB), dataudveksling mellem frontend og backend.
Godt at vide. JSONs strenge syntaks er både en styrke og en svaghed. Den gør parsing pålidelig og entydig, men det betyder også, at et enkelt manglende komma eller et ekstra afsluttende komma vil ødelægge hele filen.
YAML — YAML Ain't Markup Language
YAML er designet til at være det mest menneskelæsbare data-serialiseringsformat. Det bruger indrykning i stedet for parenteser og er særligt populært til konfigurationsfiler.
Syntakseksempel:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Nøgleegenskaber:
- Indrykningsbaseret struktur (ingen parenteser eller klammer)
- Understøtter kommentarer med
# - Understøtter alle JSON-datatyper plus flere (datoer, flerlinjestrenge)
- Følsom over for mellemrum — forkert indrykning ødelægger filen
Almindelige brugscases: Docker Compose-filer, Kubernetes-manifester, CI/CD-pipelines (GitHub Actions, GitLab CI), Ansible-playbooks, Hugo/Jekyll-konfiguration.
YAML er et supersæt af JSON, hvilket betyder, at ethvert gyldigt JSON-dokument også er gyldigt YAML. YAMLs fleksibilitet kan dog være et tveægget sværd — dens implicitte typekonvertering (f.eks. at yes tolkes som en boolean true, eller at 3.10 bliver til 3.1) har forårsaget mange subtile fejl.
CSV — Comma-Separated Values
CSV er det simpleste strukturerede dataformat. Det gemmer tabeldata som ren tekst, hvor hver linje er en række og værdier adskilles af kommaer (eller til tider semikoloner, tabulatorer eller andre separatorer).
Syntakseksempel:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Nøgleegenskaber:
- Ekstremt simpelt — bare tekst med separatorer
- Ingen datatyper — alt er en streng
- Ingen standardmåde at repræsentere indlejrede data
- Ingen officiel universel standard (RFC 4180 eksisterer, men følges ikke universelt)
- Filstørrelser er meget små
Almindelige brugscases: Regnearkseksporter, databaseimporter/-eksporter, dataanalyse (pandas, R), simpel dataudveksling, logfiler.
CSVs enkelhed er dens største styrke og største begrænsning. Den er perfekt til flade, tabelbaserede data, men kan ikke repræsentere hierarkiske strukturer. Kanttilfælde (kommaer i værdier, flerlinjede felter, tegnsætningsproblemer) gør parsing mere kompleks, end det først ser ud.
XML — Extensible Markup Language
XML var det dominerende dataudvekslingsformat, før JSON overtog. Det bruger en tagbaseret syntaks som HTML og understøtter komplekse funktioner som skemaer, namespaces og transformationer.
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øgleegenskaber:
- Tagbaseret struktur med åbne- og lukketags
- Understøtter attributter, namespaces, skemaer (XSD) og transformationer (XSLT)
- Understøtter kommentarer
- Meget omfangsrig sammenlignet med andre formater
- Ekstremt veldefineret standard med streng validering
Almindelige brugscases: SOAP-webtjenester, virksomhedsintegrationer, dokumentformater (DOCX, SVG, RSS), konfigurationsfiler i Java/.NET-økosystemer, offentlige og finansielle dataudvekslinger.
XML er mere omfangsrig end JSON eller YAML, men dens skemavalideringsfunktioner gør den uvurderlig i sammenhænge, hvor dataintegritet og formelle kontrakter mellem systemer er afgørende.
Sammenligning side om side
| Funktion | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Menneskelæsbarhed | God | Fremragende | God (tabelform) | Rimelig |
| Omfang | Lavt | Lavt | Meget lavt | Højt |
| Kommentarer | Nej | Ja | Nej | Ja |
| Indlejrede data | Ja | Ja | Nej | Ja |
| Datatyper | Basale | Rige | Ingen (alt er strenge) | Via skema |
| Skemavalidering | JSON Schema | Ingen standard | Nej | XSD |
| Filstørrelse | Lille | Lille | Mindst | Stor |
| Parsinghastighed | Hurtig | Moderat | Hurtig | Moderat |
| Primært domæne | Web-API'er | DevOps-konfig. | Data/regneark | Virksomheder |
Hvornår skal du bruge hvad
- Vælg JSON når du bygger web-API'er, gemmer konfiguration til JavaScript/TypeScript-projekter eller udveksler data mellem tjenester. Det er standardvalget til de fleste moderne applikationer.
- Vælg YAML når du skriver konfigurationsfiler, som mennesker ofte skal læse og redigere. Dens læsbarhed og understøttelse af kommentarer gør den ideel til DevOps og infrastructure-as-code.
- Vælg CSV når du arbejder med tabeldata, importerer/eksporterer fra regneark eller databaser, eller når filstørrelsen skal være minimal. Undgå den til alt hierarkisk.
- Vælg XML når du arbejder med virksomhedssystemer, SOAP-API'er eller sammenhænge, der kræver formel skemavalidering. Den er også det rigtige valg, når du har brug for dokumentorienteret markup (som SVG eller RSS).
Konvertering mellem formater
Konvertering mellem disse formater er en almindelig opgave. Et par ting at huske:
- JSON til YAML (og omvendt) er normalt tabsfrit, da YAML er et supersæt af JSON.
- CSV til JSON/YAML fungerer godt for flade data, men kræver beslutninger om struktur for indlejret output.
- XML til JSON kan miste information (attributter, namespaces, rækkefølge), fordi JSON ikke har tilsvarende koncepter.
- Ethvert format til CSV fungerer kun, hvis dataene er flade eller kan fladgøres meningsfuldt.
Tip. Når du konverterer mellem formater, skal du altid verificere outputtet. Automatiske konverteringer kan stille og roligt miste data, især med XML-attributter, YAML-typekonvertering eller CSV-tegnsætningskanttilfælde.
Gå videre
ToolK.io tilbyder gratis værktøjer til at konvertere mellem JSON, YAML, CSV og XML, formatere og validere dine data og udforske relaterede vejledninger til at arbejde med strukturerede data i dine projekter.
