JSON, YAML, CSV: Når du bør bruke hva og hvordan du konverterer
Du laster ned et datasett og det er i CSV-format. API-et ditt returnerer JSON. Konfigurasjonsfilen din er i YAML. En kollega sender deg en JSON-fil og ber om den som et regneark. En annen kollega gir deg en YAML-konfigurasjon og du trenger den som JSON for et annet verktøy.
Konvertering av dataformater er en av de oppgavene som virker trivielle inntil du faktisk holder på med det. Å forstå når du bør bruke hvilket format, og hvordan du beveger deg mellom dem, sparer deg for reell tid.
De tre formatene i korte trekk
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Hva det er: Et tekstformat for strukturerte data som støtter objekter (nøkkel-verdi-par), arrays (ordnede lister), strenger, tall, booleans og null.
Styrker: Maskinlesbart, støttes av alle programmeringsspråk, håndterer nøstede data naturlig, streng syntaks forhindrer tvetydighet.
Svakheter: Ordrik (mange klammeparenteser, brackets og anførselstegn), ikke like menneskevennlig som YAML, ingen støtte for kommentarer.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Hva det er: Et menneskevennlig dataserialiseringsformat som bruker innrykk i stedet for klammeparenteser og brackets. Det er et supersett av JSON, som betyr at gyldig JSON også er gyldig YAML.
Styrker: Ekstremt lesbart, støtter kommentarer, mindre visuell støy, flott for konfigurasjonsfiler.
Svakheter: Innrykksfølsomt (lett å ødelegge med feil mellomrom), noen overraskende parsingsoppførsler, tregere å parse enn JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Hva det er: Et flatt tekstformat der hver linje er en rad og verdier i en rad er atskilt med kommaer (eller noen ganger semikolon eller tabulatorer).
Styrker: Universell (alle regneark, databaser og dataverktøy støtter det), kompakt for tabelldata, enkel å lese og opprette.
Svakheter: Ingen støtte for nøstede data, ingen datatyper (alt er en streng), ingen standard for spesialtegn, begrenset til flate tabeller.
Visste du? YAML er teknisk sett et supersett av JSON. Dette betyr at ethvert gyldig JSON-dokument automatisk er et gyldig YAML-dokument. Du kan lime inn JSON i en YAML-parser og det vil fungere. Det motsatte er ikke sant — YAMLs funksjoner (kommentarer, ankere, flerlinjestrenger) har ingen JSON-ekvivalent.
Når du bør bruke hva
| Brukstilfelle | Beste format | Hvorfor |
|---|---|---|
| API-forespørsler og -svar | JSON | Bransjestandard, alle språk har innebygd støtte |
| Konfigurasjonsfiler | YAML | Menneskevennlig, støtter kommentarer for dokumentasjon |
| Regnearkdata | CSV | Åpnes direkte i Excel, Google Sheets, osv. |
| Databaseeksporter | CSV | Flate tabelldata kartlegges direkte til rader og kolonner |
| Komplekse nøstede data | JSON eller YAML | CSV kan ikke representere nøsting |
| Datautveksling mellom systemer | JSON | Entydig parsing, streng spesifikasjon |
| Menneskelig redigert konfig | YAML | Enklere å lese og redigere for hånd |
| Enkle datalister | CSV | Lett, ingen overhead |
Konvertering mellom formater
JSON til YAML
Dette er den vanligste konfigurasjonskontverteringen. Du har en JSON-konfig fra ett verktøy og trenger YAML for et annet. Konverteringen er enkel fordi YAML støtter alt JSON gjør.
{"server": {"host": "0.0.0.0", "port": 8080}}
Blir til:
server:
host: 0.0.0.0
port: 8080
YAML til JSON
Å gå fra YAML til JSON er også enkelt, men du mister kommentarer (JSON støtter dem ikke) og resultatet er mer ordrik.
JSON til CSV
Dette fungerer bra for flate JSON-arrays (arrays av objekter med de samme nøklene). Hvert objekt blir en rad, og hver nøkkel blir en kolonneoverskrift.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Blir til:
name,age
Alice,30
Bob,25
Advarsel JSON-til-CSV-konvertering bryter sammen når JSON inneholder nøstede objekter eller arrays. CSV er flat — den har ingen måte å representere et «skills»-array eller et nøstet «address»-objekt på. Nøstede data må enten flates ut (address.city, address.country som separate kolonner) eller serialiseres som en streng inne i en CSV-celle.
CSV til JSON
Hver rad blir et objekt, med kolonneoverskrifter som nøkler. Dette er ryddig for enkle tabelldata.
CSV til YAML
Mindre vanlig, men følger samme logikk: hver rad blir en YAML-mapping, og hele filen blir en YAML-sekvens.
Vanlige fallgruver
CSV-kodingsproblemer
CSV-filer kan bruke ulike tegnkodinger (UTF-8, Latin-1, Windows-1252). Hvis du åpner en CSV og ser forvanskede tegn som «München» i stedet for «München», er det en kodingskonflikt. Bruk alltid UTF-8 der det er mulig.
CSV-skilletegnsforvirring
Ikke alle CSV-er bruker kommaer. Europeiske CSV-er bruker ofte semikolon fordi kommaer brukes som desimalskilletegn i mange europeiske tallformater. Tabulatorseparerte verdier (TSV) er en annen vanlig variant.
YAML-innrykksfeil
YAML bruker innrykk (mellomrom, aldri tabulatorer) for å definere struktur. Et inkonsekvent innrykk, eller blanding av tabulatorer og mellomrom, produserer parsefeil eller stille feiltolkning. Bruk nøyaktig 2 mellomrom per innrykksnivå og konfigurer editoren din til å sette inn mellomrom i stedet for tabulatorer.
Advarsel I YAML parses strengen no som boolsk false, og yes parses som true. Strengen 1.0 parses som et tall. Hvis du mener de bokstavelige strengene «no», «yes» eller «1.0», må du sette dem i anførselstegn: "no", "yes", "1.0". Dette er en av YAMLs mest beryktede fallgruver.
JSON avsluttende kommaer
JSON tillater ikke avsluttende kommaer. Dette er gyldig i JavaScript, men ugyldig i JSON:
{"name": "Alice", "age": 30,} // Ugyldig JSON: avsluttende komma
Ytelse med store filer
For svært store datasett (millioner av rader) er CSV mer effektivt enn JSON eller YAML fordi det har minimal overhead per post. JSON legger til klammeparenteser og anførselstegn for hver verdi, noe som øker filstørrelsen betydelig for store tabelldata.
Praktiske verktøy for konvertering
For raske, engangskonverteringer er nettleserbaserte verktøy det raskeste alternativet. Du limer inn eller laster opp dataene dine, velger målformatet og får resultatet umiddelbart.
Tips Konverter mellom JSON, YAML og CSV-formater øyeblikkelig: Slik konverterer du dataformater. Lim inn dataene dine, velg målformatet, og kopier eller last ned resultatet.
For å arbeide spesifikt med JSON er en formatter som validerer og pretty-printer JSON uvurderlig:
- JSON-formatter — valider, formater og minifiser JSON
- JSON til CSV-konverter — konverter JSON-arrays til CSV
- YAML-JSON-konverter — konverter mellom YAML og JSON
- CSV-visning — vis og utforsk CSV-filer
Konverter dataene dine nå:
Alle verktøy er gratis og fungerer direkte i nettleseren din.