JSON, YAML, CSV: Hvornår bruger man hvad, og hvordan konverterer man?
Du downloader et datasæt, og det er i CSV. Dit API returnerer JSON. Din konfigurationsfil er i YAML. En kollega sender dig en JSON-fil og beder om den som regneark. En anden giver dig en YAML-konfiguration, som du skal bruge som JSON til et andet værktøj.
Konvertering af dataformater er en af de opgaver, der virker trivielle, indtil du faktisk sidder med dem. At forstå, hvornår man bruger hvilket format, og hvordan man bevæger sig imellem dem, sparer rigtig meget tid.
De tre formater i korte træk
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Hvad det er: Et tekstformat til strukturerede data, der understøtter objekter (nøgle-værdi-par), arrays (ordnede lister), strenge, tal, booleaner og null.
Styrker: Maskinlæsbart, bredt understøttet i alle programmeringssprog, håndterer indlejrede data naturligt, streng syntaks forhindrer tvetydighed.
Svagheder: Ordrigt (mange klammer og anførselstegn), ikke så menneskelæseligt som YAML, understøtter ikke kommentarer.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Hvad det er: Et menneskevenligt dataserialiseringsformat, der bruger indrykning i stedet for klammer. Det er et supersæt af JSON, hvilket betyder, at gyldig JSON også er gyldig YAML.
Styrker: Ekstremt læsbart, understøtter kommentarer, mindre visuel støj, perfekt til konfigurationsfiler.
Svagheder: Indrykningsfølsomt (let at ødelægge med forkert mellemrum), nogle overraskende parsingsadfærd, langsommere at parse end JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Hvad det er: Et fladt tekstformat, hvor hver linje er en række, og værdier i rækken er adskilt med kommaer (eller nogle gange semikolon eller tabulatorer).
Styrker: Universelt (alle regneark, databaser og dataværktøjer understøtter det), kompakt for tabeldata, let at læse og oprette.
Svagheder: Understøtter ikke indlejrede data, ingen datatyper (alt er en streng), ingen standard for specialtegn, begrænset til flade tabeller.
Vidste du? YAML er teknisk set et supersæt af JSON. Det betyder, at ethvert gyldigt JSON-dokument automatisk er et gyldigt YAML-dokument. Du kan indsætte JSON i en YAML-parser, og det vil virke. Det modsatte gælder ikke — YAMLs funktioner (kommentarer, ankre, flerlinjestrenge) har ingen JSON-ækvivalent.
Hvornår bruger man hvad?
| Anvendelse | Bedste format | Hvorfor |
|---|---|---|
| API-forespørgsler og -svar | JSON | Industristandard, alle sprog har native understøttelse |
| Konfigurationsfiler | YAML | Menneskelæseligt, understøtter kommentarer til dokumentation |
| Regnearkdata | CSV | Åbner direkte i Excel, Google Sheets osv. |
| Databaseeksporter | CSV | Flad tabeldata mappes direkte til rækker og kolonner |
| Komplekse indlejrede data | JSON eller YAML | CSV kan ikke repræsentere indlejring |
| Dataudveksling mellem systemer | JSON | Utvetydig parsing, streng specifikation |
| Menneskelig redigering | YAML | Lettere at læse og redigere i hånden |
| Simple datalister | CSV | Letvægts, ingen overhead |
Konvertering mellem formater
JSON til YAML
Dette er den mest almindelige konfigurationskonvertering. Du har en JSON-konfiguration fra ét værktøj og har brug for YAML til et andet. Konverteringen er ligetil, fordi YAML understøtter alt, som JSON gør.
{"server": {"host": "0.0.0.0", "port": 8080}}
Bliver til:
server:
host: 0.0.0.0
port: 8080
YAML til JSON
At gå fra YAML til JSON er heller ikke svært, men du mister kommentarer (JSON understøtter dem ikke), og resultatet er mere ordigt.
JSON til CSV
Dette fungerer fint for flade JSON-arrays (arrays af objekter med de samme nøgler). Hvert objekt bliver en række, og hver nøgle bliver en kolonneoverskrift.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Bliver til:
name,age
Alice,30
Bob,25
Advarsel JSON-til-CSV-konvertering bryder sammen, når JSON indeholder indlejrede objekter eller arrays. CSV er fladt — det har ingen måde at repræsentere et "skills"-array eller et indlejret "address"-objekt. Indlejrede data skal enten fladgøres (address.city, address.country som separate kolonner) eller serialiseres som en streng i en CSV-celle.
CSV til JSON
Hver række bliver et objekt med kolonneoverskrifter som nøgler. Dette fungerer fint for enkle tabeldata.
CSV til YAML
Mindre almindeligt, men følger samme logik: hver række bliver en YAML-mapping, og hele filen bliver en YAML-sekvens.
Typiske faldgruber
CSV-kodningsproblemer
CSV-filer kan bruge forskellige tegnkodninger (UTF-8, Latin-1, Windows-1252). Hvis du åbner en CSV og ser mærkelige tegn som "München" i stedet for "München", er det en kodningsfejl. Brug altid UTF-8 når det er muligt.
Forvirring om CSV-separatorer
Ikke alle CSV'er bruger kommaer. Europæiske CSV'er bruger ofte semikolon, fordi kommaer bruges som decimalseparatorer i mange europæiske talformater. Tabulatorseparerede værdier (TSV) er en anden almindelig variant.
YAML-indryckningsfejl
YAML bruger indrykning (mellemrum, aldrig tabulatorer) til at definere struktur. En inkonsistent indrykning, eller en blanding af tabulatorer og mellemrum, giver parseringsfejl eller stille fejltolkninger. Brug præcis 2 mellemrum pr. indrykningsniveau og indstil din editor til at indsætte mellemrum i stedet for tabulatorer.
Advarsel I YAML parses strengen no som boolesk false, og yes parses som true. Strengen 1.0 parses som et tal. Hvis du mener de bogstavelige strenge "no", "yes" eller "1.0", skal du sætte anførselstegn om dem: "no", "yes", "1.0". Dette er en af YAMLs mest berygtede fælder.
JSON-efterhængende kommaer
JSON tillader ikke efterhængende kommaer. Dette er gyldigt i JavaScript, men ugyldigt i JSON:
{"name": "Alice", "age": 30,} // Ugyldig JSON: efterhængende komma
Ydeevne ved store filer
For meget store datasæt (millioner af rækker) er CSV mere effektiv end JSON eller YAML, fordi der er minimal overhead pr. post. JSON tilføjer klammer og anførselstegn for hver værdi, hvilket øger filstørrelsen markant for store tabeldata.
Praktiske konverteringsværktøjer
Til hurtige, enkeltstående konverteringer er browser-baserede værktøjer den hurtigste mulighed. Du indsætter eller uploader dine data, vælger målformatet og får resultatet med det samme.
Tip Konverter øjeblikkeligt mellem JSON, YAML og CSV: Sådan konverterer du dataformater. Indsæt dine data, vælg målformatet, og kopier eller download resultatet.
Til specifikt arbejde med JSON er en formater, der validerer og pretty-printer din JSON, uvurderlig:
- JSON-formater — valider, formater og minimer JSON
- JSON til CSV-konverter — konverter JSON-arrays til CSV
- YAML-JSON-konverter — konverter mellem YAML og JSON
- CSV-visning — vis og udforsk CSV-filer
Konverter dine data nu:
Alle værktøjer er gratis og virker direkte i din browser.