En DevOps-ingenjör exporterar en Kubernetes-konfiguration som YAML men behöver skicka den till ett API som bara accepterar JSON. En analytiker tar emot API-svarsdata i JSON men behöver det i ett kalkylblad. En dataforskare exporterar en CSV från en databas men behöver strukturerad JSON för en webbdashboard.
Formatkonvertering är inte bara en mekanisk operation. Varje format gör olika avvägningar, och att förstå vad som går förlorat i översättningen är lika viktigt som att veta hur man konverterar.
Tre format, tre filosofier
Varje format designades för en annan målgrupp och ett annat problem:
| Format | Skapades | Designat för | Grundfilosofi |
|---|---|---|---|
| CSV | ~1972 | Datautbyte mellan program | Maximal enkelhet — bara rader och kolumner |
| JSON | 2001 | Webbdatautbyte | Maskinläsbar strukturerad data med strikta regler |
| YAML | 2001 | Konfigurationsfiler | Mänskligt läsbar strukturerad data med minimal syntax |
CSV antar att dina data är en platt tabell. Varje värde är en sträng. Det finns inget koncept för nästling, typning eller metadata.
JSON antar att dina data har struktur — objekt, arrayer, typer (strängar, tal, booleska värden, null). Det är strikt och entydigt, vilket gör det idealiskt för maskiner men ordpratigt för människor.
YAML antar att en människa kommer att läsa och redigera filen. Det använder indrag istället för klammerparenteser, stöder kommentarer och har en mer avslappnad syntax. Tekniskt sett är YAML en övermängd av JSON — varje giltigt JSON-dokument är också giltig YAML.
YAML är en övermängd av JSON Du kan klistra in ett JSON-dokument direkt i en YAML-parser och det fungerar. Det omvända gäller inte — YAML-funktioner som kommentarer, ankare och flerradssträngar har ingen JSON-motsvarighet.
Verkliga konverteringsscenarier
Konfigurationsmigrering (JSON → YAML, YAML → JSON)
Detta är den vanligaste konverteringen. Olika verktyg förväntar sig olika konfigurationsformat:
- Docker Compose, Kubernetes, GitHub Actions, Ansible — YAML
- package.json, tsconfig.json, ESLint — JSON
- Att migrera mellan verktyg innebär ofta att konvertera konfigurationer
Denna konvertering är förlustfri i båda riktningar för datainnehåll — men YAML-kommentarer går förlorade vid konvertering till JSON, eftersom JSON saknar kommentarsyntax.
Dataanalys (JSON → CSV)
API-svar kommer i JSON. Analytiker behöver kalkylblad. Denna konvertering fungerar bra för platta JSON-arrayer — arrayer av objekt med identiska nycklar mappar naturligt till rader och kolumner.
Men det bryter samman med nästlad data. Ett JSON-objekt med ett address.city-fält och en skills-array har ingen naturlig CSV-representation. Konverteraren måste välja: platta ut nästlade nycklar (address.city blir en kolumn), serialisera nästlade värden som strängar eller kassera dem.
Dataimport (CSV → JSON)
Det omvända scenariot: importera kalkylbladsdata till en webbapplikation eller ett API. CSV-till-JSON-konvertering skapar en array av objekt, med kolumnrubriker som nycklar. Haken är att CSV saknar typinformation — talet 42, strängen "42" och det booleska värdet true är alla bara text i CSV. Konverteraren måste gissa typer.
Mänsklig läsbarhet (JSON → YAML)
Ibland behöver du bara göra en tät JSON-konfigurationsfil läsbar. Konvertering till YAML ger dig ren indragning och möjligheten att lägga till kommentarer för dokumentation. Detta är särskilt värdefullt för stora konfigurationsfiler som underhålls av ett team.
Vad som går förlorat vid konvertering
Detta är den kritiska kunskapen som sparar felsökningstid:
| Konvertering | Vad som går förlorat |
|---|---|
| YAML → JSON | Kommentarer (JSON har ingen kommentarsyntax) |
| JSON → CSV | Nästling (CSV är platt), typer (allt blir text), arrayer |
| CSV → JSON | Inget (men typer måste härledas — "42" vs 42) |
| CSV → YAML | Inget (samma typhärledningsproblem) |
| JSON → YAML | Inget (YAML är en övermängd av JSON) |
| YAML → CSV | Kommentarer, nästling, typer, ankare/alias |
Mönstret är tydligt: konverteringar mot CSV förlorar mest information, eftersom CSV är det enklaste formatet. Konverteringar mellan JSON och YAML är nästan förlustfria. Och YAML-kommentarer går alltid förlorade när man lämnar YAML.
Dubbelriktad vs envägs JSON-till-YAML och YAML-till-JSON är i praktiken dubbelriktade (tur-och-retur-säkra, utom kommentarer). JSON-till-CSV och YAML-till-CSV är envägskörningar för komplex data — du kan inte rekonstruera nästling från en platt CSV.
Vanliga fallgropar vid konvertering
YAMLs typtvångsfällor
YAML tolkar automatiskt vissa strängar som icke-strängtyper. Ordet no blir boolesk false. Ordet yes blir true. Strängen 1.0 blir ett flyttal. Landskoder som NO (Norge) har ökänt orsakat buggar. Citera alltid tvetydiga värden i YAML.
CSV-avgränsare och teckenkodningsförvirring
Inte alla CSV-filer använder kommatecken. Europeiska CSV-filer använder ofta semikolon (eftersom kommatecken är decimalavgränsare i många europeiska talformat). Tabbseparerade värden (TSV) är en annan variant. Och teckenkodningsmismatcher (UTF-8 vs Latin-1) producerar felaktiga tecken med accent.
JSONs problem med avslutande kommatecken
JSON tillåter inte avslutande kommatecken. Detta är giltig JavaScript: {"a": 1, "b": 2,} — men det är ogiltig JSON. Ett enda avslutande kommatecken orsakar ett parsningsfel.
Prestanda för stora dataset
För dataset med miljontals rader är CSV betydligt effektivare än JSON eller YAML. JSON lägger till klamrar och citattecken för varje värde. En CSV med 1 miljon rader kan vara 50 MB; motsvarande JSON kan vara 150 MB.
Att välja rätt format från början
Istället för att konvertera i efterhand undviker rätt formatval på förhand informationsförlust:
- Tabelldata för kalkylblad eller databaser — CSV
- Strukturerad data för API:er eller webbappar — JSON
- Konfiguration som människor redigerar — YAML
- Komplex nästlad data med kommentarer — YAML
- Datautbyte mellan system — JSON
Gå vidare
Konvertera mellan JSON, YAML och CSV direkt med webbläsarbaserade verktyg:
- Konvertera dataformat — klistra in dina data, välj målformat, ladda ned resultatet
- JSON-formaterare — validera, formatera och minifiera JSON
- JSON till CSV-konverterare — konvertera JSON-arrayer till kalkylbladsredo CSV
- YAML-JSON-konverterare — konvertera mellan YAML och JSON med kommentarsmedvetenhet
