Prevodník CSV na JSON

Preveďte CSV na JSON online – zadarmo, okamžite a súkromne. Súbor sa spracováva priamo vo vašom prehliadači a nikdy sa nikam nenahráva.

Oddeľovač CSV
Výsledok

Sem sa vypíšu skonvertované súbory a náhľad.

Pripravené. Vyberte tabuľkový súbor na konverziu.

Ako funguje prevod

  • Prvý riadok sa načíta ako hlavička – jeho bunky sa stanú názvami polí JSON a každý nasledujúci riadok vytvorí jeden objekt.
  • Vyberte oddeľovač, ktorý zodpovedá vašim dátam – čiarku, bodkočiarku alebo tabulátor.

Váš tabuľkový súbor sa konvertuje priamo vo vašom prehliadači. Na servery BroBroGo sa nič neodosiela.

Často kladené otázky

Ako premeniť CSV na JSON?

Presuňte súbor CSV a kliknite na previesť – súbor JSON bude pripravený na stiahnutie za pár sekúnd spolu s náhľadom výsledku. Všetko prebieha priamo vo vašom zariadení.

Aký veľký súbor môžem previesť?

Do 8 MB, 10 000 riadkov a 200 stĺpcov na súbor. Väčšie dátové sady je najlepšie najskôr rozdeliť na menšie súbory.

Prevod CSV do JSON: Prečo je každý reťazec a nie číslo

Ak potrebujete z CSV súboru vytvoriť JSON, prvý problém, na ktorý narazíte, je typová slepota zdrojového formátu. CSV ukladá všetko ako plochý text – číslo 42, reťazec „42“ a boolovská hodnota, ktorá by sa dala interpretovať ako true, sú v pôvodnom súbore nerozoznateľné. Keď potiahnete CSV súbor do nástroja na prevod, každé pole opustí CSV ako reťazec. Výsledný JSON preto obsahuje iba reťazce, pokiaľ do procesu nezasiahnete dodatočnou úpravou. Ceny, množstvá, dátumy a poštové smerovacie čísla s vodiacimi nulami ostanú v úvodzovkách – JSON tieto hodnoty nepretypuje automaticky na number, boolean ani null.

Táto vlastnosť nie je chyba, ale dôsledok štandardu. Špecifikácia CSV (RFC 4180) nepozná typy. Každá bunka je sekvencia znakov. Prevodník, ktorý by sa pokúšal uhádnuť typ podľa vzoru (napríklad „3.14“ → number), by narazil na nejednoznačnosti: „00123“ môže byť číslo 123 alebo reťazec s význammom (napríklad produktový kód). Nástroj preto nerobí žiadne domnienky. Všetky hodnoty zostávajú string. Ak potrebujete v JSON čísla, prevod musíte vykonať ručne až po stiahnutí – napríklad volaním Number() v JavaScripte alebo int() v Pythone.

Žiadne vnorenie: Prečo z CSV nevznikne hierarchický JSON

CSV je striktne plochá tabuľka. Každý riadok má rovnaký počet stĺpcov (v ideálnom prípade) a každá bunka patrí presne do jedného riadka a jedného stĺpca. Preto výstupný JSON je vždy pole objektov, kde každý objekt zodpovedá jednému riadku a každý kľúč jednému stĺpcu. Objekty vnorené do objektov (napríklad adresa ako {mesto: "...", ulica: "..."} vnorená do objektu zákazníka) z CSV vytvoriť nejde – tabuľkový formát nepozná hierarchiu.

Ak by ste potrebovali vnorený JSON, musíte buď vstupnú tabuľku transformovať (napríklad rozdeliť na viacero CSV a potom ich spojiť pomocou skriptu), alebo použiť nástroj, ktorý aplikuje mapovacie pravidlá – to však tento prevodník nerobí. Prevod je priamy: stĺpec → kľúč, bunka → hodnota. Z toho vyplýva, že všetky objekty vo výstupnom poli majú identickú sadu kľúčov, ktoré zodpovedajú hlavičke CSV. Ak sa v niektorom riadku nachádza prázdna bunka, v JSON bude mať daný kľúč hodnotu prázdneho reťazca, nie null.

Delimiter nie je samozrejmosť: Čiarka, bodkočiarka alebo tabulátor

Pri CSV sa často zabúda, že „C“ v skratke znamená „comma“ – čiarka. Reálne súbory však používajú aj bodkočiarku (najmä v európskych lokalizáciách, kde čiarka slúži ako desatinný oddeľovač) a tabulátor (TSV). Prevodník vyžaduje, aby ste delimiter explicitne zvolili. Táto voľba je kritická: ak súbor s bodkočiarkami prečítate s čiarkou ako oddeľovačom, každý riadok sa rozpadne na nesprávny počet stĺpcov – často vznikne jediný stĺpec obsahujúci celý riadok.

Súbory exportované z Microsoft Excelu v slovenskom alebo českom prostredí štandardne používajú bodkočiarku, pretože čiarka je v týchto krajinách desatinná čiarka. Naopak, exporty z databáz (napríklad PostgreSQL COPY... CSV) takmer vždy používajú čiarku. Ak si nie ste istí, otvorte súbor v textovom editore a pozrite sa na prvý riadok. Ak vidíte stĺpce oddelené bodkočiarkami a desatinné čiarky v číslach (napríklad 3,14), delimiter je bodkočiarka. Ak sú desatinné bodky (napríklad 3.14) a stĺpce oddelené čiarkami, delimiter je čiarka. Tabulátor spoznáte podľa medzier, ktoré nie sú medzerami – pri otvorení v editore sa zobrazia ako premenná dĺžka prázdneho miesta.

Prevodník podporuje tri delimitre: čiarku, bodkočiarku a tabulátor. Iné oddeľovače (napríklad zvislú čiaru |) nie sú podporované. Ak súbor používa iný delimiter, musíte ho pred konverziou transformovať.

Zraniteľné miesta: Úvodzovky, zalomenia riadkov a nekonzistentné stĺpce

CSV quoting pravidlá nie sú jednotné. Štandard RFC 4180 hovorí, že ak hodnota obsahuje čiarku, zalomenie riadka alebo úvodzovku, musí byť uzavretá v úvodzovkách a vnútorná úvodzovka sa zdvojí (""). V praxi – najmä pri exportoch z starších systémov – toto pravidlo nie je vždy dodržané. Dôsledkom je, že prevodník môže zlyhať.

Typické príčiny neúspešného parsovania:

  • Zalomenie riadka v bunke bez úvodzoviek. Ak bunka obsahuje znak nového riadka a nie je uzavretá v úvodzovkách, parser si myslí, že sa začal nový riadok tabuľky.
  • Neuzavretá úvodzovka. Chýbajúca koncová úvodzovka spôsobí, že zvyšok súboru je interpretovaný ako súčasť jednej bunky.
  • Rôzny počet stĺpcov v riadkoch. Niektoré nástroje exportujú hlavičku s desiatimi stĺpcami, ale niektoré riadky obsahujú iba deväť hodnôt – parser potom nevie, do ktorého stĺpca poslednú hodnotu priradiť.

Ak prevodník narazí na takéto problémy, zobrazí správu: "This CSV could not be parsed." (Tento CSV sa nedá sparsovať). Rovnako ak súbor neobsahuje žiadne riadky s údajmi, zobrazí sa "This file has no table rows." V oboch prípadoch je potrebné skontrolovať zdrojový CSV v textovom editore, opraviť chyby v štruktúre a skúsiť prevod znova.

Limity: Počet riadkov, stĺpcov a veľkosť súboru

Prevodník nie je navrhnutý na gigantické datasety. Ak súbor prekročí určené hranice, zobrazí sa jedno z troch upozornení:

  • "This table has more than ‹max› rows." – počet riadkov presahuje maximum.
  • "This table has more than ‹max› columns." – počet stĺpcov presahuje maximum.
  • "This file is too large. Use a file under ‹max›." – veľkosť súboru presahuje stanovený limit.

Tieto limity sú nastavené tak, aby prevod prebehol v prijateľnom čase a nespôsobil vyčerpanie pamäte prehliadača. Ak sa konverzia načíta príliš dlho, zobrazí sa správa: "This conversion is taking too long. Try a smaller file." V takom prípade odporúčam súbor rozdeliť na menšie časti (napríklad pomocou split v príkazovom riadku alebo v Exceli) a prevádzať jednotlivo.

Súkromie: Prevod prebieha iba v prehliadači, nie na serveri

Všetky konverzie sa vykonávajú na strane klienta, v JavaScripte bežiacom v prehliadači. Súbor nie je odoslaný na žiadny server. Tento fakt je dôležitý, ak pracujete s citlivými údajmi (osobné údaje, firemné dáta, zdravotné záznamy). Žiadny súbor neopúšťa vaše zariadenie. Po zatvorení stránky alebo obnovení prehliadača sa všetky spracované dáta stratia.

V praxi to znamená, že prevodník môžete bez obáv použiť na súbory obsahujúce mená, adresy, telefónne čísla alebo iné údaje, ktoré by ste nechceli zdieľať s treťou stranou. Jediné riziko spočíva v tom, že ak stránku navštívite cez nezabezpečené pripojenie (HTTP namiesto HTTPS), niekto by teoreticky mohol odpočúvať prenos samotnej stránky – no samotný súbor nie je odoslaný.

Vodiace nuly a integrita údajov

Jeden z najčastejších dôvodov, prečo ľudia hľadajú CSV→JSON prevodník, je potreba zachovať vodiace nuly. Poštové smerovacie čísla (napríklad 010 01), produktové kódy (00123), čísla účtov – tieto hodnoty sú v CSV reťazcami a prevodník ich tak aj ponechá. Ak by ste rovnaké dáta otvorili v Exceli a uložili ako JSON priamo z Excelu, program by pravdepodobne odstránil vodiace nuly, pretože bunku interpretoval ako číslo.

Tu je príklad:

CSV stĺpec Hodnota v CSV Výstup v JSON (tento nástroj) Výstup pri automatickom typovaní
PSČ 00100 "00100" 100 (strata nuly)
Produkt A-045 "A-045" "A-045" (reťazec, bez zmeny)
Cena 12.50 "12.50" 12.5 (strata koncovej nuly)

Ak je pre vás dôležité, aby sa číslo 12.50 v JSON zobrazilo ako 12.5 alebo naopak ako 12.50 – musíte to riešiť až po prevode. Prevodník nemôže vedieť, ktorú reprezentáciu preferujete. Všetky hodnoty ostanú v pôvodnom tvare ako reťazec.

FAQ

1. Čo robiť, ak mi v JSON chýbajú niektoré stĺpce?

Skontrolujte, či má CSV hlavičku – prvý riadok musí obsahovať názvy stĺpcov. Ak je hlavička prázdna alebo chýba, prevodník nevie vygenerovať kľúče objektov. Rovnako skontrolujte, či všetky riadky majú rovnaký počet stĺpcov. Ak niektorý riadok obsahuje menej hodnôt, parser ho vyhodí ako nekonzistentný.

2. Prečo sa číslo 00123 v JSON zmení na 123?

Ak používate iný nástroj alebo prostredie, ktoré automaticky pretypúva reťazce na čísla (napríklad JSON.parse v JavaScripte bez dodatočnej úpravy), vodiace nuly sa stratia. Tento prevodník ich zachováva ako reťazce – ak ich po prevode znova načítate, ostanú v úvodzovkách. Problém nastane až pri ďalšom spracovaní, ak parser ignoruje typ.

3. Môžem previesť CSV s čiarkami v číslach (napríklad 1,000.50)?

Áno, ale pozor na delimiter. Ak používate čiarku ako oddeľovač stĺpcov, potom hodnota 1,000.50 spôsobí rozpad na tri stĺpce. Riešenie: v CSV musí byť takáto hodnota uzavretá v úvodzovkách ("1,000.50"). Alternatívne zmeňte delimiter na bodkočiarku, ak to štruktúra súboru umožňuje.

4. Je možné získať v JSON hodnotu null namiesto prázdneho reťazca?

Nie, prevodník vytvára pre prázdne bunky hodnotu prázdneho reťazca (""). Ak potrebujete null, musíte JSON po prevode manuálne upraviť – napríklad pomocou sed alebo skriptu, ktorý nahradí "" za null u vybraných kľúčov.

5. Čo sa stane, ak nahrajem XLSX namiesto CSV?

Nástroj automaticky rozpozná formát vstupného súboru. Pre XLSX najprv vytvorí tabuľku z prvého listu, potom ju prevedie na JSON. Výstup bude rovnaký – pole objektov. Delimiter pri XLSX nevyberáte, pretože Excel súbor nemá oddeľovač.

6. Môžem previesť súbor s 1 000 000 riadkami?

Závisí od pamäte prehliadača a nastaveného limitu. Ak je súbor príliš veľký, zobrazí sa chyba. Odporúčam súbor rozdeliť na časti po maximálne 100 000 riadkov a prevádzať postupne. Prevodník nie je určený na spracovanie celých databázových exportov – na to slúžia nástroje príkazového riadka ako csvkit alebo vlastné skripty.