Převodník CSV na JSON - Bezplatný online nástroj pro konverzi souborů
Okamžitě převádějte CSV na JSON a JSON na CSV přímo ve vašem prohlížeči. Bezpečná, rychlá konverze dat s náhledem a stažením. Žádné nahrávání souborů není vyžadováno.
Převodník CSV/JSON souborů
Snadno převádějte mezi formáty CSV a JSON. Nahrajte svůj soubor, prohlédněte si data a stáhněte převedený výstup.
Převodník CSV do JSON
Převodník JSON do CSV
Dokumentace
Co je převodník CSV na JSON?
Převodník CSV na JSON je nástroj, který převádí data z formátu CSV (hodnoty oddělené čárkami) do formátu JSON (JavaScript Object Notation) nebo opačně. Tento převodník běží výhradně ve webovém prohlížeči. Nahraný soubor nikdy neodesílá na server, takže data zůstávají v zařízení uživatele.
CSV je prostý textový formát používaný k ukládání tabulek, například tabulek exportovaných z Excelu nebo Tabulek Google. JSON je textový formát založený na dvojicích klíč–hodnota, který se široce používá k přenosu dat mezi webovými aplikacemi a rozhraními API. Protože oba formáty organizují data odlišně, převod mezi nimi vyžaduje definovanou sadu pravidel popsaných níže.
Jak převést CSV na JSON
- Klikněte na „Nahrát soubor CSV“ a v zařízení vyberte soubor
.csv. - Nástroj zobrazí náhled obsahu nezpracovaného souboru.
- Klikněte na „Převést na JSON“. Nástroj načte první řádek jako záhlaví sloupců a každý další řádek převede na jeden objekt JSON.
- Výsledek se zobrazí v náhledu výstupu s odsazením.
- Kliknutím na „Stáhnout JSON“ jej uložíte jako soubor
.json, případně kliknutím na „Kopírovat JSON“ zkopírujete text.
Jak převést JSON na CSV
- Klikněte na „Nahrát soubor JSON“ a vyberte soubor
.json. Soubor musí obsahovat pole objektů JSON, například[{"Name":"Ann"},{"Name":"Bo"}]. - Nástroj zobrazí náhled nezpracovaného textu JSON.
- Klikněte na „Převést na CSV“. Nástroj shromáždí všechny klíče použité napříč objekty a každý z nich převede na sloupec.
- Výsledek se zobrazí v náhledu výstupu jako text CSV.
- Kliknutím na „Stáhnout CSV“ jej uložíte jako soubor
.csv, případně kliknutím na „Kopírovat CSV“ zkopírujete text.
Server nevynucuje žádné limity pro nahrávání, protože žádná data neopouštějí prohlížeč. Velmi velký soubor však může kartu prohlížeče zpomalit, protože se při převodu celý soubor drží v paměti.
Pravidla převodu CSV na JSON
Převodník načítá první řádek souboru jako názvy sloupců. Každý následující řádek se převede na jeden objekt JSON, přičemž názvy sloupců slouží jako klíče. Řádek s větším počtem hodnot, než kolik je záhlaví, dostane další klíče pojmenované podle jejich absolutní pozice v řádku, takže při 3 záhlavích bude čtvrtá hodnota mít klíč field_4, pátá field_5 a tak dále; žádná data se tedy neztratí. Řádek s menším počtem hodnot dostane pro chybějící klíče prázdné řetězce. Pokud mají dvě záhlaví stejný název, druhé se přejmenuje pomocí přípony, takže a, a se převede na klíče a a a_2.
Převodník se řídí pravidly CSV definovanými v RFC 4180, technické normě pro tento formát. Čárka uvnitř pole se považuje za hodnotu v daném poli, nikoli za oddělovač sloupců, pouze pokud je pole uzavřeno v dvojitých uvozovkách, například "Smith, John". Znak konce řádku uvnitř uvozovek zůstává součástí hodnoty, místo aby byl považován za nový řádek. Dvě dvojité uvozovky uvnitř pole v uvozovkách představují jeden doslovný znak uvozovek.
Jako oddělovač sloupců se rozpoznávají pouze čárky; nástroj nezjišťuje ani nepodporuje středníky, tabulátory či jiné oddělovače.
Každá hodnota se zkontroluje a převede na určitý typ:
- Hodnota zapsaná jako běžné číslo, například
42nebo-3.5, se převede na číslo JSON. - Text
truenebofalse(bez ohledu na velikost písmen) se převede na logickou hodnotu JSON. - Vše ostatní zůstává řetězcem JSON, včetně prázdných buněk, které se převedou na prázdné řetězce.
- Číslo s počáteční nulou, například
00512, zůstává řetězcem, protože počáteční nula má často význam, například u poštovního směrovacího čísla nebo identifikačního čísla. - Číslo se přijme pouze tehdy, pokud jeho opětovným zapsáním vznikne přesně stejný text. Dlouhá celá čísla nad hodnotou 9,007,199,254,740,991, což je nejvyšší celé číslo, které číslo v JavaScriptu uchovává přesně, tuto kontrolu obvykle nesplní a zůstanou řetězci, takže nedojde ke ztrátě číslic.
- Hodnota, kterou soubor již uzavřel do uvozovek, se vždy uchová jako řetězec, i když vypadá jako číslo, protože uvozovky se považují za označení autora, že jde o text.
Prázdné řádky v souboru se přeskočí a nevytvoří prázdné objekty.
Pravidla převodu JSON na CSV
Převodník prohlédne každý objekt v poli a shromáždí úplnou množinu klíčů použitých ve všech objektech. Tyto klíče se stanou záhlavími sloupců CSV v pořadí, v jakém byly poprvé nalezeny. Pokud jednomu objektu chybí klíč, který má jiný objekt, jeho buňka zůstane prázdná, místo aby došlo k chybě.
Převod JSON na CSV nerozkládá vnořené objekty do samostatných sloupců. Hodnota, která je sama objektem nebo polem, se zapíše jako text JSON do jediné buňky, takže {"b": 1} se stane buňkou {"b":1} a [1, 2] se stane buňkou [1,2]. Nic se neztratí, ale vnořená část zůstane v jednom sloupci, místo aby byla rozdělena. Pokud každý prvek potřebuje vlastní sloupec, vnořený JSON nejprve ručně rozbalte.
Hodnota null i klíč, který jeden objekt obsahuje a jiný ne, vytvoří prázdnou buňku.
Hodnota buňky obsahující čárku, uvozovku nebo konec řádku se ve výstupu uzavře do dvojitých uvozovek a každá uvozovka uvnitř se zdvojí, v souladu s výše uvedeným pravidlem escapování CSV.
Vstupní JSON musí být pole a každá jeho položka musí být objektem. Číslo, řetězec, null nebo vnořené pole místo objektu vyvolá chybu „JSON musí být pole objektů“. Pole bez jediné položky vyvolá chybu „Pole JSON je prázdné. Přidejte alespoň jeden objekt k převodu.“ Nahraný soubor bez obsahu vyvolá chybu „Nahraný soubor je prázdný.“
Příklad výpočtu
Výchozí soubor CSV:
1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Jeho převodem na JSON vznikne:
1[
2 {
3 "Name": "Ann Lee",
4 "Age": 29,
5 "Member": true
6 },
7 {
8 "Name": "Bo, Jr.",
9 "Age": 7,
10 "Member": false
11 }
12]
13Všimněte si, že "Bo, Jr." si zachovalo čárku, protože pole bylo ve zdrojovém souboru uzavřeno v uvozovkách, a Age a Member se převedly na číslo a logickou hodnotu.
Převodem téhož JSON zpět na CSV, s přidaným řádkem, v němž chybí Age, vznikne:
1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5Chybějící hodnota Age se převede na prázdnou buňku a čárka v "Bo, Jr." způsobí, že pole bude při výstupu znovu uzavřeno v uvozovkách.
Běžné použití
- Analýza dat: převod exportu CSV z tabulkového procesoru nebo analytického nástroje na JSON, aby jej bylo možné zpracovat v JavaScriptu, a následný převod výsledků zpět na CSV pro zprávu.
- Testování API: vývojář vytvářející API, které přijímá nahrané soubory CSV, může převést ukázkové soubory na JSON a ověřit, zda analyzátor vytváří očekávané objekty.
- Migrace dat: přesun záznamů ze systému, který exportuje CSV, do systému přijímajícího pouze JSON, nebo opačně.
- Rychlá kontrola: převod souboru JSON na tabulkové CSV pro snazší čtení nebo opačným směrem.
Programovací knihovny nabízejí stejný převod pro větší nebo opakované úlohy, například moduly csv a json v Pythonu nebo pandas. Nástroje příkazového řádku, jako csvkit a jq, umožňují převod a filtrování z terminálu. Tyto možnosti jsou vhodné pro dávkové zpracování; tento nástroj v prohlížeči se hodí pro jednorázový převod souboru bez nutnosti cokoli instalovat.
Často kladené otázky
Odesílá se nahraný soubor na server? Ne. Převod probíhá v JavaScriptu uvnitř karty prohlížeče. Soubor se načítá z místního zařízení a nikdy se nepřenáší.
Podporuje převodník jiné oddělovače než čárku, například středník nebo tabulátor? Ne. Aktuální verze načítá pouze hodnoty oddělené čárkami. Soubor používající jiný oddělovač je nejprve nutné převést do podoby s čárkami, například nahrazením oddělovače v textovém editoru.
Proč zůstalo číslo jako 00512 ve výstupu JSON textovým řetězcem?
Počáteční nuly mají obvykle význam, například u poštovního směrovacího čísla, proto převodník tuto hodnotu ponechá jako řetězec, místo aby ji převedl na číslo 512, čímž by se nula odstranila.
Co se stane, když převedu JSON obsahující vnořené objekty?
Vnořený objekt se zapíše jako text JSON do jediné buňky, například {"b":1}. Data zůstanou zachována, ale nerozdělí se do samostatných sloupců. Pokud každý údaj potřebuje vlastní sloupec, vnořená data nejprve rozbalte.
Co když můj JSON není pole objektů?
Nástroj zobrazí chybu a nic nepřevede. Vstupem musí být pole JSON, v němž je každá položka objektem, například [{"a":1},{"a":2}].
Musí být první řádek souboru CSV vždy řádkem záhlaví? Ano. Převodník vždy považuje první řádek za názvy sloupců. U souboru bez řádku záhlaví bude první řádek dat chybně načten jako záhlaví.
Reference
- Shafranovich, Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180, IETF, říjen 2005. https://www.rfc-editor.org/rfc/rfc4180
- Bray, T., ed. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259, IETF, prosinec 2017. https://www.rfc-editor.org/rfc/rfc8259
- "Working with JSON." MDN Web Docs, Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON