En DevOps-ingeniør eksporterer en Kubernetes-konfigurasjon som YAML, men trenger å sende den til en API som bare aksepterer JSON. En analytiker mottar API-responsdata i JSON, men trenger det i et regneark. En dataforsker eksporterer en CSV fra en database, men trenger strukturert JSON for et web-dashbord.
Formatkonvertering er ikke bare en mekanisk operasjon. Hvert format gjør ulike avveininger, og å forstå hva som går tapt i oversettelsen er like viktig som å vite hvordan man konverterer.
Tre formater, tre filosofier
Hvert format ble designet for et ulikt publikum og et ulikt problem:
| Format | Opprinnelse | Designet for | Kjernfilosofi |
|---|---|---|---|
| CSV | ~1972 | Datautveksling mellom programmer | Maksimal enkelhet — bare rader og kolonner |
| JSON | 2001 | Datautveksling på web | Maskinlesbar strukturert data med strenge regler |
| YAML | 2001 | Konfigurasjonsfiler | Menneskelesbar strukturert data med minimal syntaks |
CSV antar at dataene dine er en flat tabell. Hver verdi er en streng. Det finnes intet konsept om nøsting, typing eller metadata.
JSON antar at dataene dine har struktur — objekter, arrays, typer (strenger, tall, boolske verdier, null). Det er strengt og entydig, noe som gjør det ideelt for maskiner, men ordriktig for mennesker.
YAML antar at et menneske vil lese og redigere filen. Det bruker innrykk i stedet for krøllparenteser, støtter kommentarer og har en mer avslappet syntaks. Teknisk sett er YAML et supersett av JSON — ethvert gyldig JSON-dokument er også gyldig YAML.
YAML er et supersett av JSON Du kan lime inn et JSON-dokument direkte i en YAML-parser, og det vil fungere. Det motsatte er ikke sant — YAML-funksjoner som kommentarer, ankere og flerlinjestrenger har ingen JSON-ekvivalent.
Virkelige konverteringsscenarier
Konfigurasjonsmigrering (JSON til YAML, YAML til JSON)
Dette er den vanligste konverteringen. Ulike verktøy forventer ulike konfigurasjonsformater:
- Docker Compose, Kubernetes, GitHub Actions, Ansible bruker YAML
- package.json, tsconfig.json, ESLint bruker JSON
- Migrering mellom verktøy betyr ofte å konvertere konfigurasjoner
Denne konverteringen er tapsfri i begge retninger for datainnhold — men YAML-kommentarer går tapt ved konvertering til JSON, siden JSON ikke har kommentarsyntaks.
Dataanalyse (JSON til CSV)
API-svar kommer i JSON. Analytikere trenger regneark. Denne konverteringen fungerer bra for flate JSON-arrays — arrays av objekter med identiske nøkler mapper naturlig til rader og kolonner.
Men det bryter sammen med nestede data. Et JSON-objekt med et address.city-felt og en skills-array har ingen naturlig CSV-representasjon. Konverteren må velge: flate ut nestede nøkler (address.city blir en kolonne), serialisere nestede verdier som strenger, eller forkaste dem.
Dataimport (CSV til JSON)
Det motsatte scenarioet: importere regnearkdata inn i en webapplikasjon eller API. CSV-til-JSON-konvertering oppretter en array av objekter, med kolonneoverskrifter som nøkler. Haken er at CSV ikke har typeinformasjon — tallet 42, strengen "42" og den boolske verdien true er alle bare tekst i CSV. Konverteren må gjette typer.
Menneskelesbarhet (JSON til YAML)
Noen ganger trenger du bare å gjøre en tett JSON-konfigurasjonsfil lesbar. Konvertering til YAML gir deg ryddig innrykk og muligheten til å legge til kommentarer for dokumentasjon. Dette er spesielt verdifullt for store konfigurasjonsfiler som skal vedlikeholdes av et team.
Hva som går tapt i konvertering
Dette er den kritiske kunnskapen som sparer feilsøkingstid:
| Konvertering | Hva som går tapt |
|---|---|
| YAML til JSON | Kommentarer (JSON har ingen kommentarsyntaks) |
| JSON til CSV | Nøsting (CSV er flat), typer (alt blir tekst), arrays |
| CSV til JSON | Ingenting (men typer må utledes — "42" vs 42) |
| CSV til YAML | Ingenting (samme typeutledningsproblem) |
| JSON til YAML | Ingenting (YAML er et supersett av JSON) |
| YAML til CSV | Kommentarer, nøsting, typer, ankere/aliaser |
Mønsteret er tydelig: konverteringer mot CSV mister mest informasjon, fordi CSV er det enkleste formatet. Konverteringer mellom JSON og YAML er nesten tapsfrie. Og YAML-kommentarer går alltid tapt når man forlater YAML.
Toveis vs. enveis JSON-til-YAML og YAML-til-JSON er effektivt toveis (rundtur-sikre, bortsett fra kommentarer). JSON-til-CSV og YAML-til-CSV er enveis for komplekse data — du kan ikke rekonstruere nøsting fra en flat CSV.
Vanlige fallgruver ved konvertering
YAMLs typetvangssfeller
YAML tolker automatisk visse strenger som ikke-strengtyper. Ordet no blir boolsk false. Ordet yes blir true. Strengen 1.0 blir et desimaltall. Landskoder som NO (Norge) har forårsaket kjente feil. Sett alltid anførselstegn rundt tvetydige verdier i YAML.
CSV-skilletegn og tegnkodingsforvirring
Ikke alle CSV-er bruker komma. Europeiske CSV-er bruker ofte semikolon (fordi komma er desimalskilletegn i mange europeiske tallformater). Tabulatorseparerte verdier (TSV) er en annen variant. Og tegnkodingsmisforhold (UTF-8 vs Latin-1) produserer forvrengede aksenttegn.
JSONs etterfølgende kommaproblem
JSON tillater ikke etterfølgende komma. Dette er gyldig JavaScript: {"a": 1, "b": 2,} — men det er ugyldig JSON. Et enkelt etterfølgende komma forårsaker en parserfeil.
Ytelse med store datasett
For datasett med millioner av rader er CSV betydelig mer effektivt enn JSON eller YAML. JSON legger til krøllparenteser, hakeparenteser og anførselstegn for hver verdi. En CSV med 1 million rader kan være 50 MB; tilsvarende JSON kan bli 150 MB.
Velge riktig format fra starten
I stedet for å konvertere i etterkant, unngår du informasjonstap ved å velge riktig format fra starten:
- Tabelldata for regneark eller databaser — CSV
- Strukturerte data for API-er eller webapper — JSON
- Konfigurasjon som mennesker skal redigere — YAML
- Komplekse nestede data med kommentarer — YAML
- Datautveksling mellom systemer — JSON
Gå videre
Konverter mellom JSON, YAML og CSV øyeblikkelig med nettleserbaserte verktøy:
- Konverter dataformater — lim inn dataene dine, velg målformat, last ned resultatet
- JSON-formaterer — valider, formater og minifiser JSON
- JSON til CSV-konverterer — konverter JSON-arrays til regnearksklar CSV
- YAML-JSON-konverterer — konverter mellom YAML og JSON med kommentarhåndtering
