CSV, JSON ja YAML
Kolme muotoa kuljettaa suurimman osan maailman rakenteisesta datasta. Niiden välillä muuntaminen on helppoa; muuntaminen niin, ettei jokin hiljaa vioitu, vaatii hieman huolellisuutta.
Julkaistu
Mihin kukin on tarkoitettu
CSV on taulukko: rivejä ja sarakkeita, ei muuta. Se on yleisesti luettavissa, äärimmäisen pieni eikä pysty ilmaisemaan mitään sisäkkäistä. JSON on puu – objekteja taulukoissa objektien sisällä – ja sitä lähes jokainen verkkorajapinta puhuu. YAML ilmaisee samat rakenteet kuin JSON, mutta aaltosulkeiden sijaan sisennyksellä, mikä tekee siitä ihmiselle paljon miellyttävämmän lukea ja muokata, ja siksi asetustiedostot ovat siirtyneet sen suuntaan.
Tyyppimuunnoksen ansa
Tämä on se, joka oikeasti maksaa ihmisille rahaa. CSV sisältää vain tekstiä – arvoa ei voi merkitä numeroksi, päivämääräksi tai merkkijonoksi. Siksi muuntimet arvaavat, ja arvaukset ovat usein vääriä:
- Postinumero kuten
01234muuttuu luvuksi1234, ja alkunolla katoaa. - Tuotekoodi kuten
1-2muuttuu päivämääräksi. - Pitkä tilinumero muuttuu liukuluvuksi ja menettää viimeiset numeronsa.
NA, joka tarkoittaa Pohjois-Amerikkaa, muuttuu arvoksi ”ei saatavilla”.
Jokainen näistä tapahtuu hiljaa. Siksi huolellisen CSV–JSON-muunnoksen pitäisi jättää jokainen arvo merkkijonoksi ja antaa sinun päättää – minkä tämän sivuston muunnin tekee tarkoituksella, vaikka se näyttää aluksi saivartelulta.
Mikä ei selviä matkasta CSV:ksi
Sisäkkäisyys. Litteiden objektien JSON-taulukosta tulee siisti taulukko. Heti kun arvo on itse objekti tai taulukko, sille ei ole saraketta. Vaihtoehdot ovat litistää yhdistetyillä avaimilla, sarjallistaa sisäkkäinen osa takaisin tekstiksi solun sisään tai pudottaa se – ja sen pudottaminen hiljaa on kolmesta pahin. Sen kirjoittaminen takaisin JSON-tekstinä solun sisään säilyttää datan ainakin palautettavana.
YAML:n terävät reunat
YAML on miellyttävä lukea ja poikkeuksellisen helppo kirjoittaa väärin.
- Sisennys on rakenne, eikä tabulaattoreita sallita. Väärään paikkaan osunut välilyönti muuttaa merkitystä eikä aiheuta virhettä.
- Jotkin paljaat sanat ovat totuusarvoja. Vanhemmassa YAML:ssa
y,n,on,off,yesjanojäsentyvät kaikki tosi- tai epätosiarvoiksi – joten maasarake, jossa onNONorjalle, muuttuu arvoksifalse. Laita ne lainausmerkkeihin. - Kommentit katoavat JSON-muunnoksessa, koska JSON:ssa ei ole tapaa esittää niitä.
Edestakaista muunnosta ei taata
JSON:n muuntaminen YAML:ksi ja takaisin palauttaa yleensä sen, mistä aloitit. CSV:n muuntaminen JSON:ksi ja takaisin ei yleensä palauta: lainausmerkkien tyyli, eri muotoisten tietueiden sarakejärjestys ja tyhjien arvojen esitys ovat kaikki valintoja, ja eri työkalut valitsevat eri tavoin. Jos edestakaisen muunnoksen pitää olla täsmällinen, tarkista se oletuksen sijaan.
Näillä voit siirtyä muodosta toiseen: muunna CSV JSON-muotoon, muunna JSON CSV-muotoon tai muunna JSON YAML-muotoon – ja tarkista tulos, koska edestakainen muunnos ei aina ole täsmällinen.