CSV:stä JSON:iksi ja takaisin tietoja hajottamatta
CSV on tekstipohjainen taulukko: yksi tietue per rivi, kentät erotettuna erotinmerkillä, yleensä pilkulla. Se hajoaa, kun kenttä sisältää erotinmerkin, lainausmerkin tai rivinvaihdon, koska lukijan on erotettava rakenne sisällöstä. Noudata lainausmerkkisääntöjä, tarkista erotin ja otsikkorivi, ja säilytä johtavia nollia sisältävät luvut tekstinä. Loput artikkelista käsittelee, mitä edestakainen muunnos voi säilyttää ja mitä ei.
CSV–JSON-muunninMuunna CSV JSONiksi tai takaisinTee se ilmaiseksiMikä CSV-tiedosto oikeasti on
CSV:lle ei ole yhtä virallista standardia, mutta RFC 4180 kuvaa yleisimmän muodon, ja useimmat lukijat noudattavat sitä. Sen keskeiset säännöt mahtuvat lyhyeen luetteloon:
- Jokainen tietue on omalla rivillään, ja RFC:n mukaan rivit päättyvät vaununpalautukseen ja rivinvaihtoon, CRLF.
- Kentät erotetaan pilkuilla.
- Kenttä, joka sisältää pilkun, lainausmerkin tai rivinvaihdon, suljetaan lainausmerkkeihin.
- Lainatun kentän sisällä oleva lainausmerkki kirjoitetaan kahtena lainausmerkkinä.
Eli rivillä 1001,"Smith, Ann",02134 on kolme kenttää, koska lainausmerkkien sisällä oleva pilkku on sisältöä. Jokaisesta pilkusta katkaiseva erottelija löytää neljä. fixmintin lukija noudattaa näitä sääntöjä: lainattu kenttä voi sisältää erotinmerkin, rivinvaihtoja ja kaksinkertaisia lainausmerkkejä, ja sulkematon lainausmerkki ilmoitetaan rivillä, jolla se alkaa.
Miksi erotin vaihtuu
Pilkku on RFC:n oletus, mutta kun pilkku on desimaalierotin, joten 1,5 tarkoittaa yhtä ja puolta, taulukkolaskentaohjelmat tallentavat CSV:n usein puolipisteillä. Sarkaimella erotetut tiedostot (TSV) välttävät ristiriidan useimmissa aineistoissa, koska sarkaimia esiintyy tekstin sisällä harvoin.
Erotin-valikossa on vaihtoehdot Automaattinen, Pilkku, Puolipiste, Sarkain ja Putkimerkki. Automaattinen lukee ensimmäiset kymmenen riviä, laskee jokaisen ehdokkaan lainausmerkkien ulkopuolelta ja valitsee sen, jonka määrä rivillä on johdonmukaisin. Valitse erotin itse, jos automaattinen arvaus menee pieleen.
Muunto fixmintissä
Esimerkki käyttää CSV–JSON-muuntimen oletusasetuksia.
Esimerkki
Liitä tämä CSV, ja Ensimmäinen rivi on otsikko on valittuna:
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Kun Muunna luvut on pois päältä ja JSON-sisennys on 2 välilyöntiä, työkalu palauttaa:
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Kun Muunna luvut on päällä, id ja zip 10001 muuttuvat luvuiksi, ja 02134 pysyy tekstinä.
Vaiheet
- Liitä CSV tai pudota .csv-, .tsv-, .txt- tai .json-tiedosto.
- Tarkista Ensimmäinen rivi on otsikko, Erotin ja Muunna luvut. Valitse JSON-sisennykseksi 2 välilyöntiä, Sarkain tai Tiivis.
- Kopioi tulos tai lataa se .json-tiedostona.
Pidä luvut tekstinä
JSON-luvuissa ei voi olla johtavia nollia, joten 02134 ei ole kelvollinen JSON-luku. Postinumerot, puhelinnumerot ja tuotekoodit on pidettävä tekstinä, muuten nolla katoaa. Kun Muunna luvut on päällä, työkalu muuntaa 10001:n, mutta säilyttää 02134:n merkkijonona. Asetus on oletuksena pois päältä. Se muuntaa vain arvot, joissa desimaalierottimena on piste, joten puolipistetiedoston 1,5 säilyy kirjoitettuna.
Pitkissä tunnisteissa on myös oltava varovainen. JavaScript, joka ajaa suurimman osan selaimen JSON-käsittelystä, tallentaa luvut 64-bittisinä liukulukuina. Kokonaisluvut ovat tarkkoja vain 9 007 199 254 740 991 asti, eli kahden potenssiin 53 miinus yksi. Luku 12345678901234567890 muuttuu 12345678901234567000:ksi, kun JavaScript-ohjelma lukee sen. Työkalu kirjoittaa numerot juuri sellaisina kuin ne on kirjoitettu, mutta ohjelma, joka jäsentää JSON:n JavaScriptillä, pyöristää ne. Tallenna tunnisteet merkkijonoina. Muotoile JSON säilyttää tällaiset luvut myös kirjoitetussa muodossa ja kertoo, kuinka monta se säilytti.
Sisäkkäinen JSON ja paluu CSV:hen
CSV on litteä, ja JSON voi olla sisäkkäinen. JSON:n muuntaminen CSV:ksi tekee yhden sarakkeen jokaiselle avaimelle kaikissa olioissa siinä järjestyksessä, jossa kukin avain ensimmäisen kerran esiintyy. Sisäkkäinen olio tai lista menee soluun JSON-tekstinä, null muuttuu tyhjäksi soluksi, ja true ja false kirjoitetaan sanoina. Rivit erotetaan CRLF-merkeillä, ja kenttä lainataan vain silloin, kun se sisältää erottimen, lainausmerkin, rivinvaihdon tai välilyöntejä kummassakin päässä.
Syöte, joka alkaa merkillä [ tai {, luetaan JSON:ksi. Pikapainike vaihtaa suunnan, ja sen teksti on CSV → JSON tai JSON → CSV. JSON → CSV -suunnassa tulosasetuksissa näkyvät Erotin-valikko ja Excelille-vaihtoehto.
Edestakainen muunnos menettää tietoa. Null ja tyhjä merkkijono muuttuvat molemmat tyhjäksi soluksi, eikä sisäkkäisyys palaa takaisin, joten säilytä alkuperäinen JSON, jos tarvitset sen rakenteen.
Excel, UTF-8 ja tavujärjestysmerkki
CSV-tiedosto koostuu tavuista, ja lukijan on tiedettävä merkistö. UTF-8 säilyttää ääkköset ja muut erikoismerkit. Tavujärjestysmerkki (BOM) eli kolme tavua tiedoston alussa merkitsee tiedoston UTF-8-muotoiseksi. Ilman sitä jotkin taulukkolaskentaohjelmat lukevat tiedoston paikallisella koodisivulla, ja ääkköset muuttuvat oudoiksi merkeiksi. Taulukkolaskentaohjelmat muuttavat usein myös 02134:n muotoon 2134, kun ne avaavat CSV:n.
Excelille-vaihtoehto lisää tavujärjestysmerkin ladattuun CSV-tiedostoon vain, ei kopioituun tekstiin, ja vain JSON → CSV -suunnassa. Lukija poistaa tavujärjestysmerkin syötteestä, joten jo siinä oleva tiedosto muuntuu ilman virhettä.
Reunatapaukset
- Epätasaiset rivit. Kun otsikko on päällä, lyhyt rivi täydennetään tyhjillä arvoilla, ja pidempi rivi säilyttää ylimääräiset arvonsa sarakkeina column_N. Tulos ilmoittaa, kuinka monta riviä poikkeaa otsikosta.
- Toistuvat tai tyhjät otsikot. Toistuva nimi saa tunnisteen _2, _3 ja niin edelleen, ja tyhjä nimi muuttuu muotoon column_N. Molemmilla muutoksilla estetään kahden avaimen korvautuminen toisillaan.
- Kaarevat lainausmerkit. Tekstinkäsittelyohjelman lainausmerkit eivät ole CSV-lainausmerkkejä, joten kenttä kuten “Smith, Ann” katkeaa pilkustaan. Suorista ne ensin Korjaa liitetty teksti -työkalulla tai noudattamalla kaarevien lainausmerkkien opasta.
- Rivinvaihdot lainausmerkeissä. Kahdelle riville ulottuva kenttä on yksi tietue, mutta Poista päällekkäiset rivit jakaa syötteensä jokaisesta rivinvaihdosta, joten se käsittelee kaksi puolikasta erillisinä riveinä. Muunna JSON:ksi ja vertaa olioita tai tarkista käsin. Työkalu on silti hyödyllinen luetteloille, joissa on yksi arvo per rivi.
- Suuret tiedostot. Tulosruutu näyttää ensimmäiset 100 000 merkkiä, mutta Kopioi ja lataus sisältävät koko tuloksen.
- Virheellinen JSON. Muunnin ilmoittaa virheen rivin ja sarakkeen, ja virheen kohdalla merkin alla on ^-merkki. Muotoile JSON selittää yleisimmät virheet, ja JSON-virheiden opas käsittelee niitä tarkemmin.
Välilyönnit kenttien ympärillä, tyhjät rivit tiedoston keskellä ja epäjohdonmukaisesti käytetyt lainausmerkit aiheuttavat useimmat CSV-ongelmat jo ennen kuin erottimella on merkitystä. Siivoa CSV ensin CSV-siivoojalla ja muunna sen jälkeen.
Käännetty tekoälyn avulla: Englanninkielinen alkuperäisteos.
Kommentit
Ei vielä kommentteja. Ole ensimmäinen.


