JSON, YAML, CSV: milloin käyttää mitäkin ja kuinka muuntaa niiden välillä
Lataat tietojoukon ja se on CSV-muodossa. API:si palauttaa JSONia. Konfiguraatiotiedostosi on YAMLissa. Kollega lähettää sinulle JSON-tiedoston ja pyytää sen taulukkolaskentamuodossa. Toinen kollega antaa YAML-konfiguraation ja tarvitset sen JSONina eri työkalua varten.
Dataformaattien muuntaminen on yksi niistä tehtävistä, jotka tuntuvat triviaaleilta – kunnes olet todella tekemässä sitä. Ymmärtäminen, milloin käyttää mitäkin formaattia ja kuinka siirtyä niiden välillä, säästää oikeaa aikaa.
Kolme formaattia lyhyesti
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Mitä se on: Tekstimuoto strukturoidulle datalle, joka tukee objekteja (avain-arvo-pareja), taulukoita (järjestettyjä listoja), merkkijonoja, numeroita, booleaneja ja null-arvoja.
Vahvuudet: Konelukuinen, laajasti tuettu jokaisessa ohjelmointikielessä, käsittelee sisäkkäistä dataa luontevasti, tiukka syntaksi estää monitulkintaisuuden.
Heikkoudet: Sanainen (paljon aaltosulkeita, hakasulkeita ja lainausmerkkejä), ei yhtä ihmisluettava kuin YAML, ei tue kommentteja.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Mitä se on: Ihmisystävällinen datan sarjalistusformaatti, joka käyttää sisennystä aaltosulkeiden ja hakasulkeiden sijaan. Se on JSONin ylijoukko, eli kelvollinen JSON on myös kelvollista YAML:ia.
Vahvuudet: Erittäin luettava, tukee kommentteja, vähemmän visuaalista kohinaa, erinomainen konfiguraatiotiedostoille.
Heikkoudet: Sisennysherkkä (helppo rikkoa väärällä välistyksellä), joitakin yllättäviä jäsennyksen käyttäytymisiä, hitaampi jäsentää kuin JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Mitä se on: Tasainen tekstimuoto, jossa jokainen rivi on rivi ja rivin arvot erotetaan pilkuilla (tai joskus puolipisteillä tai tabulaattoreilla).
Vahvuudet: Universaali (jokainen taulukkolaskenta, tietokanta ja datatyökalu tukee sitä), kompakti taulukkomuotoiselle datalle, helppo lukea ja luoda.
Heikkoudet: Ei tue sisäkkäistä dataa, ei datatyyppejä (kaikki on merkkijonoja), ei standardia erikoismerkeille, rajoittuu tasaisiin taulukoihin.
Tiesitkö? YAML on teknisesti JSONin ylijoukko. Tämä tarkoittaa, että mikä tahansa kelvollinen JSON-dokumentti on automaattisesti kelvollinen YAML-dokumentti. Voit liittää JSONin YAML-jäsentimeen ja se toimii. Päinvastoin ei pidä paikkansa – YAML:in ominaisuuksilla (kommentit, ankkurit, monirivisiä merkkijonoja) ei ole JSON-vastinetta.
Milloin käyttää mitäkin
| Käyttötapaus | Paras formaatti | Miksi |
|---|---|---|
| API-pyynnöt ja -vastaukset | JSON | Alan standardi, jokaisella kielellä natiivituki |
| Konfiguraatiotiedostot | YAML | Ihmisluettava, tukee kommentteja dokumentointia varten |
| Taulukkolaskentatiedot | CSV | Avautuu suoraan Excelissä, Google Sheetsissa jne. |
| Tietokantaviennit | CSV | Tasainen taulukkodata vastaa suoraan rivejä ja sarakkeita |
| Monimutkainen sisäkkäinen data | JSON tai YAML | CSV ei pysty esittämään sisäkkäisyyttä |
| Datanvaihto järjestelmien välillä | JSON | Yksiselitteinen jäsennys, tiukka määrittely |
| Ihmisen muokkaama konfiguraatio | YAML | Helpompi lukea ja muokata käsin |
| Yksinkertaiset datalistat | CSV | Kevyt, ei ylikuormitusta |
Formaattien välillä muuntaminen
JSON → YAML
Tämä on yleisin konfiguraatiomuunnos. Sinulla on JSON-konfiguraatio yhdestä työkalusta ja tarvitset YAMLia toiseen. Muunnos on suoraviivainen, koska YAML tukee kaikkea mitä JSON tukee.
{"server": {"host": "0.0.0.0", "port": 8080}}
Tulee:
server:
host: 0.0.0.0
port: 8080
YAML → JSON
YAMLista JSONiin siirtyminen on myös yksinkertaista, mutta menetät kommentit (JSON ei tue niitä) ja tulos on sanaisempi.
JSON → CSV
Tämä toimii hyvin tasaisille JSON-taulukoille (taulukoille, joissa on samojen avainten objekteja). Jokainen objekti muuttuu riviksi ja jokainen avain sarakkeen otsikoksi.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Tulee:
name,age
Alice,30
Bob,25
Varoitus JSON-CSV-muunnos hajoaa, kun JSON sisältää sisäkkäisiä objekteja tai taulukoita. CSV on tasainen – sillä ei ole tapaa esittää "skills"-taulukkoa tai sisäkkäistä "address"-objektia. Sisäkkäinen data on joko litistettävä (address.city, address.country erillisinä sarakkeina) tai sarjallistettava merkkijonona CSV-solussa.
CSV → JSON
Jokainen rivi muuttuu objektiksi, jonka avaimina ovat sarakkeiden otsikot. Tämä on siistinä yksinkertaiselle taulukkomuotoiselle datalle.
CSV → YAML
Harvinaisempaa, mutta noudattaa samaa logiikkaa: jokainen rivi muuttuu YAML-kuvaukseksi ja koko tiedosto muuttuu YAML-sekvenssiksi.
Yleisiä sudenkuoppia
CSV-koodausongelmat
CSV-tiedostot voivat käyttää eri merkkikoodauksia (UTF-8, Latin-1, Windows-1252). Jos avaat CSV:n ja näet vääristyneitä merkkejä kuten "München" "München"-sanan sijaan, se on koodausristiriita. Käytä aina UTF-8 kun mahdollista.
CSV-erotinsekaannus
Kaikki CSV-tiedostot eivät käytä pilkkuja. Eurooppalaiset CSV-tiedostot käyttävät usein puolipisteitä, koska pilkkuja käytetään desimaalierottimina monissa eurooppalaisissa numeroformaateissa. Tabulaattorilla erotetut arvot (TSV) ovat toinen yleinen muunnelma.
YAML-sisennysvirheet
YAML käyttää sisennystä (välilyöntejä, ei koskaan tabulaattoreita) rakenteen määrittelyyn. Epäjohdonmukainen sisennys tai tabulaattorien ja välilyöntien sekoittaminen aiheuttaa jäsennysvirheitä tai hiljaista väärää tulkintaa. Käytä täsmälleen 2 välilyöntiä per sisennystaso ja konfiguroi editorisi lisäämään välilyöntejä tabulaattorien sijaan.
Varoitus YAMLissa merkkijono no jäsennetään boolean-arvoksi false, ja yes jäsennetään arvoksi true. Merkkijono 1.0 jäsennetään numeroksi. Jos tarkoitat kirjaimellisia merkkijonoja "no", "yes" tai "1.0", sinun on lisättävä lainausmerkit: "no", "yes", "1.0". Tämä on yksi YAMLin kuuluisimmista sudenkuopista.
JSON:in loppupilkut
JSON ei salli loppupilkkuja. Tämä on kelvollista JavaScriptissä mutta virheellistä JSON:issa:
{"name": "Alice", "age": 30,} // Virheellinen JSON: loppupilkku
Suorituskyky suurilla tiedostoilla
Hyvin suurille tietojoukoille (miljoonia rivejä) CSV on tehokkaampi kuin JSON tai YAML, koska sillä on minimaalinen ylikuorma jokaista tietuetta kohti. JSON lisää aaltosulkeita ja lainausmerkkejä jokaiselle arvolle, mikä kasvattaa tiedostokokoa merkittävästi suurelle taulukkomuotoiselle datalle.
Käytännölliset muunnostyökalut
Nopeisiin kertaluonteisiin muunnoksiin selainkäyttöiset työkalut ovat nopein vaihtoehto. Liimaat tai lataat datasi, valitset kohdeformaatin ja saat tuloksen välittömästi.
Vinkki Muunna JSON, YAML ja CSV -formaattien välillä välittömästi: Kuinka muuntaa dataformaatteja. Liimaa datasi, valitse kohdeformaatti ja kopioi tai lataa tulos.
JSONin käsittelyyn erityisesti validaattori, joka validoi ja muotoilee JSONin, on korvaamaton:
- JSON-muotoilutyökalu — validoi, muotoile ja minimoi JSON
- JSON-CSV-muunnin — muunna JSON-taulukot CSV:ksi
- YAML-JSON-muunnin — muunna YAMLin ja JSONin välillä
- CSV-katselin — tarkastele ja tutki CSV-tiedostoja
Muunna datasi nyt:
Kaikki työkalut ovat ilmaisia ja toimivat suoraan selaimessasi.