CSV v JSON: Pretvorba brez izgube podatkov
Orodje za pretvorbo CSV v JSON rešuje na videz preprosto nalogo: iz datoteke z ločenimi vrednostmi naredi strukturiran JSON. Toda za to preprostostjo se skrivajo pasti, ki jih večina uporabnikov spozna šele, ko njihove številčne poštne številke čudežno izginejo ali ko se datoteka z vejicami znotraj stolpcev sesuje. Ta članek pojasnjuje, kako orodje deluje, katerih mejnih primerov se morate zavedati in zakaj razhajanje med ravnim CSV-jem in drevesnim JSON-om ni le tehnična podrobnost, ampak ključna razlika, ki vpliva na vsak korak pretvorbe.
Zakaj je CSV → JSON drugačen od drugih pretvorb
Večina pretvorb med formati (npr. JSON v XLSX) deluje na dveh strukturah, ki ju lahko obravnavamo kot tabeli. Pri pretvorbi CSV v JSON pa ni tako. CSV je po definiciji ploščata tabela. Vse, kar lahko vsebuje, so vrstice in stolpci, vsaka celica pa je en sam kos besedila. JSON omogoča gnezdenje – objekte znotraj objektov, matrike, mešane tipe podatkov. Orodje teh možnosti ne izkorišča. Vsako vrstico CSV-ja pretvori v en objekt, vsak stolpec v ključ, in sestavi vse skupaj v matriko objektov. To pomeni, da iz CSV-ja nikoli ne morete dobiti hierarhičnega JSON-a z objekti znotraj objektov, ne da bi dodali dodatna pravila, ki jih orodje ne pozna.
Prav tako CSV ne pozna podatkovnih tipov. Vsaka vrednost je niz znakov. Številke, datumi, logične vrednosti (true/false) in NULL obstajajo le kot besedilo. Orodje jih ne pretvarja samodejno. Cena izdelka, zapisana kot 19,99, ostane v JSON-u niz "19,99", ne število 19.99. To ni pomanjkljivost orodja – to je posledica zasnove formata. Če potrebujete številke v JSON-u, jih morate po pretvorbi ročno pretvoriti v ustrezne tipe.
Tretja ključna razlika je izbira ločila. Pri CSV-ju določite, ali so stolpci ločeni z vejico, podpičjem ali tabulatorjem. Napačna izbira povzroči, da orodje ne prepozna stolpcev in prikaže napako: "This CSV could not be parsed." Pri datotekah, izvoženih iz slovenskih ali nemških različic Excela, so stolpci pogosto ločeni s podpičjem, ker vejica v teh okoljih služi kot decimalno ločilo.
Kako orodje obdela vašo datoteko
Postopek je premočrten, a upošteva več mejnih pogojev. Ko izberete datoteko, orodje prebere vse vrstice, pri čemer upošteva pravila citiranja RFC 4180. Polja, obdana z narekovaji, lahko vsebujejo vejice in prelome vrstic. Če pa so narekovaji napačno ubežani (npr. namesto "" uporabite "), bo razčlenjevanje spodletelo. Orodje v tem primeru vrne zgolj "This CSV could not be parsed." brez dodatnih podrobnosti o vrsti napake.
Po uspešnem branju orodje prikaže predogled pretvorjenih podatkov. Prikaže število vrstic in stolpcev ter velikost izhodne datoteke. To je trenutek, ko lahko preverite, ali so vsi podatki pravilno preneseni. Posebej bodite pozorni na naslednje:
- Številke z vodilnimi ničlami (poštne številke, identifikatorji izdelkov). V CSV-ju so shranjene kot nizi, npr.
"01234". V JSON-u ostanejo"01234". Če JSON kasneje naložite v program, ki samodejno pretvarja nize v številke (npr. JavaScript sJSON.parse), vodilna ničla izgine. To ni napaka orodja, ampak programske kode, ki podatke obdeluje. - Prelomi vrstic znotraj celic. Če CSV vsebuje celico z več vrsticami (npr. naslov), orodje prelome ohrani kot
v nizu. V predogledu so morda videti kot vrzeli, vendar so pravilno vključeni v izhod. - Prazna polja. Orodje jih obravnava kot prazne nize (
""), ne kotnull. Če želite prazna polja pretvoriti vnull, morate to storiti ročno po pretvorbi.
Ko ste zadovoljni s predogledom, datoteko prenesete. Celotna obdelava poteka v brskalniku – noben podatek se ne naloži na strežnik. To je pomembno za občutljive podatke (npr. sezname strank ali finančne podatke), saj ne zapustijo vaše naprave.
Mejni primeri in napake, na katere morate biti pozorni
Orodje ima vgrajene omejitve in natančno določena sporočila o napakah. Pri delu s CSV-ji pogosteje kot pri drugih formatih naletite na težave, saj je format manj standardiziran, kot se zdi. Spodnja tabela povzema najpogostejše napake in njihov pomen:
| Sporočilo o napaki | Pomen in vzrok |
|---|---|
"Choose one file first." |
Ni bila izbrana nobena datoteka pred klikom na dejanje pretvorbe. |
"Choose a CSV, JSON or XLSX file." |
Izbrana datoteka ima drugo končnico kot .csv, .json ali .xlsx. |
"This CSV could not be parsed." |
CSV ima napake pri citiranju (neuravnoteženi narekovaji, manjkajoče vejice znotraj citiranih polj), nedosledno število stolpcev med vrsticami ali mešanico ločil. |
"This file has no table rows." |
Datoteka je prazna ali pa je vsaka vrstica v njej prazna. CSV samo z glavo ni napaka – pretvori se v prazno matriko (``). |
"This table has more than ‹max› rows." |
Število podatkovnih vrstic presega omejitev 10.000 vrstic. |
"This table has more than ‹max› columns." |
Število stolpcev presega omejitev 200 stolpcev. |
"This file is too large. Use a file under ‹max›." |
Velikost datoteke v bajtih presega omejitev 8 MB. |
"This conversion is taking too long. Try a smaller file." |
Pretvorba je presegla približno 12-sekundno omejitev, običajno zato, ker je datoteka prevelika ali preveč kompleksna. |
Vse napake so dokončne za ta poskus pretvorbe. Orodje ne poskuša popraviti napačno oblikovanega CSV-ja ali skrajšati datoteke, ki presega omejitve.
Posebno pozornost namenite citiranju. CSV standard določa, da se polje, ki vsebuje vejico, prelom vrstice ali narekovaj, obda z dvojnimi narekovaji. Narekovaj znotraj polja pa se ubeži z dvojnim narekovajem (""). Če so podatki izvoženi iz sistema, ki teh pravil ne upošteva (npr. stari programi ali ročno urejene datoteke), bo razčlenjevanje odpovedalo. Orodje vam ne pove, v kateri vrstici je napaka – zato je priporočljivo, da sumljive datoteke pred pretvorbo preverite v urejevalniku besedil.
Še en pogost vir težav so nedosledna ločila. Nekatere datoteke uporabljajo vejico, a nato vsebujejo tudi podpičje znotraj polj. Orodje ne more samodejno zaznati mešanih ločil; izbrati morate eno samo. Če niste prepričani, poskusite z vsemi tremi možnostmi in preverite predogled.
Kdo potrebuje to pretvorbo (in zakaj ravno tako)
Orodje je namenjeno trem glavnim skupinam uporabnikov.
Prvi so razvijalci, ki prejemajo podatke iz baz ali preglednic in jih morajo uporabiti v spletnih aplikacijah ali API-jih, ki pričakujejo JSON. Namesto da ročno pišejo skripte za pretvorbo, uporabijo orodje za hitro pridobitev pravilne strukture. Ker orodje ohranja vse vrednosti kot nize, se lahko zanesejo, da bodo podatki (tudi poštne številke) prispeli nespremenjeni.
Drugi so podatkovni analitiki, ki pretvarjajo stare CSV datoteke (npr. sezname naslovov) v JSON za nadaljnjo obdelavo v orodjih, kot je D3.js ali Tableau. Vodilne ničle so zanje ključne – brez njih bi se poštne številke 01234 spremenile v 1234, kar bi povzročilo napake pri geokodiranju.
Tretji so timi, ki delijo podatke med netehničnimi in tehničnimi sodelavci. Neprogramer ustvari CSV v Excelu, razvijalec pa potrebuje JSON za aplikacijo. Orodje deluje kot most brez nalaganja podatkov na strežnik, kar je še posebej pomembno pri občutljivih informacijah, kot so osebni podatki ali poslovna skrivnost.
Pogosta vprašanja (FAQ)
V CSV-ju imam številke z vodilnimi ničlami, v JSON-u pa so izginile. Kaj je narobe?
Orodje jih ohrani kot nize. Če jih vaš program po pretvorbi samodejno pretvori v številke, se vodilne ničle izgubijo. Preverite kodo, ki obdeluje JSON – uporabite funkcijo, ki ohrani nize, ali dodajte predpono (npr. "postcode": "01234").
Kako pretvorim CSV s podpičjem v JSON? Pri izbiri formata nastavite ločilo na »Semicolon«. Orodje nato uporabi podpičje kot ločilo stolpcev. Vejice v podatkih ne bodo povzročile težav, razen če so nepravilno citirane.
Lahko pretvorim več CSV datotek hkrati? Ne. Orodje obdela samo eno datoteko naenkrat. Za paketno pretvorbo uporabite lokalno skripto ali orodje, ki podpira več datotek.
Zakaj orodje ne prepozna moje datoteke, čeprav ima končnico.csv? Orodje preverja format na podlagi vsebine, ne le končnice. Če datoteka vsebuje npr. HTML kodo ali ni pravilno oblikovana, je ne bo prepoznalo. Prepričajte se, da datoteka uporablja pravilno obliko CSV (vsaj ena vrstica z glavo in podatki, ločeni z izbranim ločilom).
Kaj se zgodi s celicami, ki imajo prelom vrstice?
Če je celica pravilno citirana (obdana z narekovaji), prelom vrstice ostane v JSON-u kot . Če ni citirana, orodje prelom razume kot konec vrstice in podatki bodo napačno razdeljeni v več vrstic.