CSV ja JSON: kaksi tapaa kuljettaa samaa dataa
Suurin osa taulukkomuotoisesta datasta päätyy elämään jompaankumpaan kahdesta muodosta. CSV on taulukkolaskennan äidinkieli: tekstitiedosto, jossa jokainen rivi on tietue ja pilkut erottavat sarakkeet. JSON on rajapintojen ja sovellusten kieli: rakenteinen tekstimuoto, joka koostuu objekteista (avain-arvo-pareja) ja taulukoista (järjestetyistä listoista). Ne kuvaavat samaa tietoa hyvin eri muodoissa, minkä vuoksi niiden välillä muuntaminen tulee vastaan niin usein. Tämä sivu tekee muunnoksen molempiin suuntiin, kokonaan selaimessasi.
CSV loistaa aina, kun ruudukko tuntuu luontevalta. Vie raportti tietokannasta, lataa tilausluettelo tai tallenna taulukko Excelistä tai Google Sheetsistä, ja saat lähes aina CSV:n. Se on kompakti, ihmisen luettavissa, ja jokainen analytiikkatyökalu maan päällä pystyy avaamaan sen. JSON loistaa aina, kun ohjelmisto puhuu ohjelmiston kanssa. REST-rajapinnat lähettävät ja vastaanottavat sitä, konfigurointitiedostot käyttävät sitä, ja JavaScript lukee sen ilman jäsennyskirjastoa. Kun sinun täytyy syöttää taulukkolaskentavienti rajapintaan tai vetää rajapintavastaus taulukkolaskentaan, käännät oikeasti näiden kahden maailman välillä.

Miten rivit ja otsikot muuttuvat objekteiksi
Kartoitus on yksinkertaisempi kuin miltä se näyttää. CSV-tiedoston ensimmäinen rivi on yleensä otsikkorivi, ja nuo otsikkonimet muuttuvat JSON:n avaimiksi. Jokaisesta seuraavasta rivistä tulee yksi objekti, jossa jokainen solu on parina vastaavan otsikon kanssa. Koko tiedostosta tulee taulukko näitä objekteja. Niinpä CSV, jossa on sarakkeet name,email,age, muuttuu listaksi kuten [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...]. Toiseen suuntaan JSON CSV:ksi lukee ensimmäisen objektin avaimet rakentaakseen otsikkorivin, sitten kirjoittaa yhden rivin per objekti. Se on siisti, ennustettava edestakainen matka, kunhan datasi on aidosti taulukkomuotoista.
Ansat, jotka kannattaa tuntea
CSV näyttää triviaalilta mutta piilottaa muutamia teräviä kulmia. Suurin on pilkut kentän sisällä. Jos osoite sisältää "Berlin, Germany", naiivi jako pilkun kohdalta repisi tuon yhden arvon kahdeksi sarakkeeksi. CSV-standardi käsittelee tämän kääriemällä tällaiset kentät lainausmerkkeihin, ja lainausmerkit lainatun kentän sisällä tuplataan (""). Hyvä muunnin kunnioittaa näitä sääntöjä, jotta datasi ei hiljaisesti siirry sarakkeesta toiseen. Tarkkaile myös erotinta: monet eurooppalaiset viennit käyttävät puolipistettä pilkun sijaan, koska pilkku on siellä jo desimaalierotin. Sarkaimia ja pystyviivoja esiintyy myös.
Syvempi ero on tyypeissä. CSV:ssä ei ole minkäänlaista käsitystä datatyypeistä. Kaikki on tekstiä, joten luku 42, totuusarvo true ja tyhjä solu näyttävät kaikki tavallisilta merkkijonoilta. JSON sen sijaan erottaa luvut, merkkijonot, totuusarvot, null-arvon ja sisäkkäiset rakenteet. Kun muunnat CSV:tä JSON:ksi, arvot saapuvat merkkijonoina, ellei työkalulle kerrota tulkita lukuja ja totuusarvoja. JSON:n muuntamisessa CSV:ksi on päinvastainen ongelma: sisäkkäiset objektit ja taulukot eivät mahdu siististi litteään ruudukkoon, joten ne yleensä litistetään tai muutetaan merkkijonoksi yhteen soluun. Tämän tietäminen etukäteen säästää sinut myöhemmältä ihmettelyltä siitä, miksi sarake "näyttää väärältä".

Todellinen edestakainen matka
Tässä on tilanne, joka tulee vastaan jatkuvasti. Kollega lähettää sinulle taulukon uusista käyttäjistä ja pyytää sinua lataamaan heidät sisäisen rajapinnan kautta. Rajapinta hyväksyy vain JSON:ia. Viet taulukon CSV:ksi, liität sen tänne ja saat takaisin siistin taulukon objekteja, valmiina pudotettavaksi pyyntösi hyötykuormaan. Myöhemmin rajapinta palauttaa JSON-listan luomistaan tietueista, ja sinun täytyy antaa se takaisin samalle kollegalle tarkastettavaksi. Liität JSON:in, muunnat sen CSV:ksi, ja se avautuu suoraan hänen taulukkolaskentaansa. Ei skriptejä, ei asennuksia, vain kaksi nopeaa käännöstä keskellä tavallista työnkulkua.
Vain paikallista, tarkoituksella
Kaikki tämä toimii selaimessasi. CSV:si ja JSON:isi jäsentää ja muuntaa JavaScript omalla koneellasi, eikä mitään ladata palvelimelle. Sillä on väliä, koska viennit sisältävät usein oikeita nimiä, sähköposteja, tilaustietoja tai sisäisiä tunnisteita, joita ei pitäisi liittää satunnaiseen etäpalveluun. Täällä data ei koskaan poistu sivulta. Jos haluat siistiä tuloksen jälkeenpäin, JSON-muotoilijamme tulostaa sen siististi ja validoi sen, ja voit selata muita datamuuntimiamme liittyviä muotoja varten.
Usein kysytyt kysymykset
Ladataanko dataani jonnekin?
Ei. Muunnos tapahtuu kokonaan selaimessasi JavaScriptin avulla, joten CSV:si ja JSON:isi pysyvät omalla laitteellasi eikä niitä koskaan lähetetä palvelimelle.
Käsitteleekö muunnin pilkut kenttien sisällä?
Kyllä. Kentät, jotka sisältävät pilkkuja, tulisi kääriä lainausmerkkeihin CSV:ssä, ja jäsennin kunnioittaa näitä lainausmerkkejä, joten arvo pysyy yhdessä sarakkeessa.
Miksi lukuni näkyvät tekstinä JSON:issa?
CSV:ssä ei ole datatyyppejä, joten jokainen solu on tavallista tekstiä. Arvoista tulee JSON-merkkijonoja, ellei lukujen ja totuusarvojen jäsennystä sovelleta, koska lähdetiedosto ei anna tapaa erottaa lukua sanasta.
Mitä tapahtuu sisäkkäiselle JSON:ille, kun muunnan sen CSV:ksi?
Litteä ruudukko ei voi pitää sisäkkäisiä rakenteita, joten sisäkkäiset objektit ja taulukot yleensä litistetään tai kirjoitetaan yhtenä merkkijonoksi muutettuna arvona yhteen soluun.
Voinko käyttää puolipistettä tai sarkainta pilkun sijaan?
Kyllä. Monet viennit, erityisesti eurooppalaiset, käyttävät puolipisteitä tai sarkaimia erottimina, ja työkalu voi lukea niitä tavallisen pilkun sijaan.
Muuntaako se molempiin suuntiin?
Kyllä. Voit muuttaa CSV:n JSON:ksi ja JSON:in takaisin CSV:ksi, mikä tekee edestakaisista matkoista taulukkolaskentaohjelmien ja rajapintojen välillä suoraviivaisia.
