En DevOps-ingeniør eksporterer en Kubernetes-konfiguration som YAML, men skal sende den til en API, der kun accepterer JSON. En analytiker modtager API-svardata i JSON, men har brug for det i et regneark. En dataforsker eksporterer CSV fra en database, men har brug for struktureret JSON til et web-dashboard.
Formatkonvertering er ikke bare en mekanisk operation. Hvert format gør forskellige afvejninger, og at forstå hvad der går tabt i oversættelsen er lige så vigtigt som at vide, hvordan man konverterer.
Tre formater, tre filosofier
Hvert format blev designet til et forskelligt publikum og et forskelligt problem:
| Format | Skabt | Designet til | Grundfilosofi |
|---|---|---|---|
| CSV | ~1972 | Dataudveksling mellem programmer | Maksimal enkelhed — kun rækker og kolonner |
| JSON | 2001 | Web-dataudveksling | Maskinlæsbar struktureret data med strenge regler |
| YAML | 2001 | Konfigurationsfiler | Menneskelæsbar struktureret data med minimal syntaks |
CSV antager, at dine data er en flad tabel. Enhver værdi er en streng. Der er ingen koncept for indlejring, typning eller metadata.
JSON antager, at dine data har struktur — objekter, arrays, typer (strenge, tal, booleans, null). Det er strengt og utvetydigt, hvilket gør det ideelt til maskiner men ordrig for mennesker.
YAML antager, at et menneske vil læse og redigere filen. Det bruger indrykninger i stedet for klammer, understøtter kommentarer og har en mere afslappet syntaks. Teknisk set er YAML en overmængde af JSON — ethvert gyldigt JSON-dokument er også gyldig YAML.
YAML er en overmængde af JSON Du kan indsætte et JSON-dokument direkte i en YAML-parser, og det vil virke. Det omvendte er ikke sandt — YAML-funktioner som kommentarer, ankre og flerlinjestrenge har ingen JSON-ækvivalent.
Virkelige konverteringsscenarier
Konfigurationsmigrering (JSON → YAML, YAML → JSON)
Dette er den mest almindelige konvertering. Forskellige værktøjer forventer forskellige konfigurationsformater:
- Docker Compose, Kubernetes, GitHub Actions, Ansible — YAML
- package.json, tsconfig.json, ESLint — JSON
- Migrering mellem værktøjer kræver ofte konvertering af konfigurationer
Denne konvertering er tabsfri i begge retninger hvad angår dataindhold — men YAML-kommentarer går tabt ved konvertering til JSON, da JSON ikke har kommentarsyntaks.
Dataanalyse (JSON → CSV)
API-svar kommer i JSON. Analytikere har brug for regneark. Denne konvertering fungerer godt for flade JSON-arrays — arrays af objekter med identiske nøgler mapper naturligt til rækker og kolonner.
Men det bryder sammen med indlejrede data. Et JSON-objekt med et address.city-felt og et skills-array har ingen naturlig CSV-repræsentation. Konverteren skal vælge: fladgør indlejrede nøgler (address.city bliver en kolonne), serialiser indlejrede værdier som strenge, eller kassér dem.
Dataimport (CSV → JSON)
Det omvendte scenarie: import af regnearksdata til en webapplikation eller API. CSV-til-JSON-konvertering opretter et array af objekter med kolonneoverskrifter som nøgler. Fælden er, at CSV ikke har typeinformation — tallet 42, strengen "42" og boolean true er alle bare tekst i CSV. Konverteren må gætte typer.
Menneskelæsbarhed (JSON → YAML)
Nogle gange skal du bare gøre en tæt JSON-konfigurationsfil læsbar. Konvertering til YAML giver dig ren indrykning og muligheden for at tilføje kommentarer til dokumentation. Dette er særligt værdifuldt for store konfigurationsfiler, der vedligeholdes af et team.
Hvad der går tabt ved konvertering
Dette er den kritiske viden, der sparer fejlfindingstid:
| Konvertering | Hvad der går tabt |
|---|---|
| YAML → JSON | Kommentarer (JSON har ingen kommentarsyntaks) |
| JSON → CSV | Indlejring (CSV er flad), typer (alt bliver tekst), arrays |
| CSV → JSON | Intet (men typer skal udledes — "42" vs 42) |
| CSV → YAML | Intet (samme type-udledningsproblem) |
| JSON → YAML | Intet (YAML er en overmængde af JSON) |
| YAML → CSV | Kommentarer, indlejring, typer, ankre/aliaser |
Mønsteret er klart: konverteringer mod CSV mister mest information, fordi CSV er det simpleste format. Konverteringer mellem JSON og YAML er næsten tabsfri. Og YAML-kommentarer går altid tabt, når man forlader YAML.
Tovejs vs envejs JSON-til-YAML og YAML-til-JSON er reelt tovejs (rundtur-sikre, bortset fra kommentarer). JSON-til-CSV og YAML-til-CSV er envejs for komplekse data — du kan ikke rekonstruere indlejring fra en flad CSV.
Almindelige faldgruber ved konvertering
YAMLs typetvangsfælder
YAML fortolker automatisk visse strenge som ikke-strengtyper. Ordet no bliver boolean false. Ordet yes bliver true. Strengen 1.0 bliver et flydende tal. Landekoder som NO (Norge) har berømt forårsaget fejl. Sæt altid tvetydige værdier i anførselstegn i YAML.
CSV-separator og tegnkodningsforvirring
Ikke alle CSV'er bruger kommaer. Europæiske CSV'er bruger ofte semikoloner (fordi kommaer er decimalseparatorer i mange europæiske talformater). Tabulatorseparerede værdier (TSV) er en anden variant. Og tegnkodningsmismatches (UTF-8 vs Latin-1) producerer forvrængede accentuerede tegn.
JSONs problem med afsluttende komma
JSON tillader ikke afsluttende kommaer. Dette er gyldig JavaScript: {"a": 1, "b": 2,} — men det er ugyldig JSON. Et enkelt afsluttende komma forårsager en parserfejl.
Ydeevne med store datasæt
For datasæt med millioner af rækker er CSV betydeligt mere effektivt end JSON eller YAML. JSON tilføjer klammer og anførselstegn for hver værdi. En CSV med 1 million rækker kan være 50 MB; den tilsvarende JSON kan være 150 MB.
At vælge det rigtige format fra start
I stedet for at konvertere bagefter undgår det rigtige formatvalg på forhånd informationstab:
- Tabeldata til regneark eller databaser — CSV
- Strukturerede data til API'er eller webapps — JSON
- Konfiguration, som mennesker redigerer — YAML
- Komplekse indlejrede data med kommentarer — YAML
- Dataudveksling mellem systemer — JSON
Gå videre
Konvertér mellem JSON, YAML og CSV øjeblikkeligt med browser-baserede værktøjer:
- Konvertér dataformater — indsæt dine data, vælg målformat, download resultatet
- JSON-formater — validér, formatér og minificér JSON
- JSON til CSV-konverter — konvertér JSON-arrays til regnearks-klar CSV
- YAML-JSON-konverter — konvertér mellem YAML og JSON med kommentarbevidsthed
