JSON to CSV: Jak probíhá převod hierarchických dat do ploché tabulky
Na rozdíl od převodů mezi tabulkovými formáty (např. CSV do Excelu) řeší tento nástroj zásadně odlišný problém: zploštění hierarchického, typovaného datového formátu do ploché, netypované tabulky. JSON podporuje objekty, pole, čísla, boolean hodnoty a null v libovolně vnořených strukturách. CSV žádné typy, vnořování ani listy nezná. Převod proto zahodí všechny typové informace, vnořenou strukturu, případné více listů (v JSON neexistují) a formátování. Pro reprezentaci vnořených JSON objektů v plochém CSV nástroj zplošťuje klíče objektů pomocí tečkové notace (např. address.city). Pole objektů se stanou řádky tabulky; pole polí zůstávají jako řádky. Protože CSV používá oddělovače, musí být čárky a konce řádků uvnitř hodnot uzavřeny do uvozovek – nástroj to řeší automaticky, ale úvodní nuly v číslech mohou být ztraceny. Před převodem se musíte rozhodnout, jak mají být vnořená pole reprezentována (nástroj standardně používá tečkovou notaci).
Klíčové vlastnosti nástroje JSON to CSV
| Vlastnost | Popis |
|---|---|
| Zpracování dat | Probíhá výhradně v prohlížeči – data neopouštějí váš počítač |
| Podporované vstupy | Jeden JSON soubor (ve skutečnosti nástroj akceptuje CSV, JSON a XLSX, ale relevantní je JSON) |
| Výstupní formát | CSV s volitelným oddělovačem (čárka, středník, tabulátor) |
| Náhled | Tabulkový náhled převedených dat s počtem řádků a sloupců |
| Velikost souboru | Uvedená velikost výstupního souboru |
| Omezení | Maximální velikost vstupního souboru, maximální počet řádků a sloupců |
| Chybové stavy | Neplatný JSON, příliš velký soubor, příliš mnoho řádků/sloupců, nepodporovaný formát |
Jak nástroj zpracovává vstupní JSON
Nástroj očekává tabulkově tvarovaný JSON – tedy pole objektů nebo pole polí. Pokud JSON není platný nebo nemá tabulkovou strukturu, zobrazí se chyba: „This JSON is invalid or not table‑shaped.“ Zpracování probíhá ve dvou režimech:
- Pole objektů – každý objekt se stane jedním řádkem, klíče objektů sloupci. Vnořené objekty se zplošťují tečkovou notací. Například
{"user": {"name": "Jan", "age": 30}}se převede na sloupceuser.nameauser.age. - Pole polí – každé vnitřní pole se stane řádkem, prvky pole sloupci. Žádné klíče objektů zde nefigurují.
Tento přístup je zásadní, protože JSON může obsahovat libovolně vnořené struktury, které CSV nedokáže přímo reprezentovat. Nástroj provádí flattening (zploštění) pomocí rekurzivního procházení objektů a vytváření plochých klíčů.
Technika zploštění tečkovou notací
Představte si následující vnořený JSON:
[
{
"id": 1,
"name": "Jan Novák",
"address": {
"city": "Praha",
"zip": "11000"
},
"phones": ["+420111222333", "+420444555666"]
}
]
Nástroj jej převede na CSV s těmito sloupci:
| id | name | address.city | address.zip | phones | phones |
|---|---|---|---|---|---|
| 1 | Jan Novák | Praha | 11000 | +420111222333 | +420444555666 |
Tečková notace address.city jednoznačně identifikuje cestu k hodnotě v původním JSON. Pole jsou indexována hranatými závorkami – phones pro první prvek. Tento způsob je standardní a srozumitelný pro uživatele, kteří potřebují data dále zpracovávat.
Ztráta typů a struktury při konverzi
Největší rozdíl mezi JSON a CSV spočívá v práci s datovými typy. JSON rozlišuje:
- Čísla – celá i desetinná (např.
42,3.14) - Řetězce – v uvozovkách (např.
"text") - Booleany –
true/false - Null – prázdná hodnota
- Objekty – vnořené struktury
- Pole – seznamy hodnot
CSV zná pouze řetězce. Všechny hodnoty z JSON se proto při převodu převedou na textovou reprezentaci. Číslo 42 se stane řetězcem "42", boolean true se stane "true", null se stane prázdným řetězcem nebo "null" (záleží na implementaci nástroje). Tato ztráta typových informací je nevratná – pokud CSV později načtete do tabulkového procesoru, může dojít k automatické detekci typu, ale původní informace o typu je ztracena.
Problém s úvodními nulami
CSV standardně interpretuje číselné řetězce jako čísla. Pokud JSON obsahuje "00123" (řetězec s úvodními nulami), nástroj jej převede na 00123, ale při otevření v Excelu se úvodní nuly ztratí (Excel jej interpretuje jako číslo 123). Nástroj automaticky neaplikuje žádné formátování – to je úkolem uživatele při následném zpracování.
Automatické uvozování hodnot
Protože CSV používá oddělovače, musí nástroj automaticky uzavřít do uvozovek hodnoty, které obsahují:
- Oddělovač (čárka, středník nebo tabulátor)
- Konec řádku
- Uvozovky (zdvojují se na
"")
Toto je standardní chování dle specifikace RFC 4180. Uživatel nemusí uvozování řešit ručně.
Význam oddělovačů v CSV
Volba oddělovače není jen technický detail – má praktický dopad na kompatibilitu s různými aplikacemi. Nástroj nabízí tři možnosti:
| Oddělovač | Typické použití |
|---|---|
Čárka (,) |
Standard v anglicky mluvících zemích, výchozí pro většinu nástrojů |
Středník (;) |
Standard v evropských zemích, kde se desetinná čárka píše jako čárka (např. ČR, Německo, Francie) |
Tabulátor (\t) |
Použití při exportu do databází, TSV formát, minimalizace konfliktů s daty |
Volba středníku je důležitá pro uživatele, kteří pracují v českém prostředí, protože Excel v české lokalizaci standardně používá středník jako oddělovač sloupců. Pokud byste použili čárku, Excel by data nerozpoznal správně.
Kdo nástroj potřebuje a proč
Nástroj JSON to CSV řeší konkrétní potřeby v datových pipelinech:
- Vývojáři API – JSON je běžný formát REST API odpovědí, ale pro analýzu v Excelu nebo Google Sheets je potřeba CSV. Nástroj umožňuje rychlý převod bez psaní skriptu.
- Datoví analytici – Při práci s JSON daty z webových služeb (např. Facebook API, Twitter API) potřebují plochý CSV pro import do nástrojů jako Tableau nebo Power BI.
- Uživatelé s důrazem na soukromí – Protože zpracování probíhá zcela na straně klienta, nikam se data neodesílají. To je klíčové pro citlivá data (lékařské záznamy, finanční údaje, osobní informace).
- Rychlé prototypování – Místo psaní Python skriptu nebo použití jq lze JSON převést během pár sekund přímo v prohlížeči.
Kontrola, zda je JSON tabulkově tvarovaný
Než nástroj použijete, ověřte si strukturu JSON. Ideální je formát:
[
{"jmeno": "Jan", "vek": 30},
{"jmeno": "Eva", "vek": 25}
]
Toto je pole objektů – každý objekt má stejné klíče. Pokud JSON vypadá takto:
{
"uzivatele": [
{"jmeno": "Jan"},
{"jmeno": "Eva"}
]
}
Nejde přímo o tabulkový tvar – nástroj by jej odmítl jako netabulkový. V takovém případě musíte JSON nejprve upravit (např. vyextrahovat pole uzivatele).
Chybové stavy a omezení
Nástroj zobrazuje specifické chybové hlášky, které pomáhají identifikovat problém:
| Chyba | Příčina |
|---|---|
| “Choose one file first.” | Nebyl vybrán žádný soubor |
| “Choose a CSV, JSON or XLSX file.” | Vybrán soubor s nepodporovanou příponou |
| “Choose a different output format.” | Uživatel zvolil stejný formát jako vstup |
| “This JSON is invalid or not table‑shaped.” | JSON není platný nebo není pole objektů/pole polí |
| “This file is too large. Use a file under ‹max›.” | Soubor překračuje limit velikosti |
| “This table has more than ‹max› rows.” | Počet řádků překračuje limit |
| “This table has more than ‹max› columns.” | Počet sloupců překračuje limit |
| “Could not convert this file.” | Obecná chyba konverze |
| “Conversion cancelled.” | Uživatel zrušil konverzi |
| “This conversion is taking too long. Try a smaller file.” | Převod trvá příliš dlouho – pravděpodobně kvůli velkému souboru nebo složité struktuře |
Všechna omezení (velikost souboru, počet řádků a sloupců) jsou stanovena s ohledem na výkon prohlížeče a možnosti JavaScriptu. Při překročení limitů je vhodné JSON rozdělit na menší části nebo použít specializovaný nástroj pro zpracování velkých dat.
Časté dotazy (FAQ)
Proč se ztratily typy čísel a booleanů?
JSON podporuje čísla a booleany jako samostatné datové typy. CSV umí ukládat pouze textové řetězce. Při konverzi se tedy všechna čísla a booleany převedou na své textové reprezentace (např. true -> "true", 42 -> "42"). Tuto ztrátu nelze obejít, jde o fundamentální rozdíl mezi formáty.
Můžu použít jiný oddělovač než čárku?
Ano. Nástroj nabízí možnost vybrat čárku, středník nebo tabulátor. Volba závisí na tom, v jaké aplikaci budete CSV dále zpracovávat. V českém Excelu doporučujeme středník, v anglickém čárku. Tabulátor je vhodný pro databázové importy.
Proč je JSON odmítnut jako netabulkový?
Nástroj vyžaduje JSON ve formátu pole objektů (všechny objekty se stejnou strukturou) nebo pole polí. Pokud JSON obsahuje jeden objekt (např. {"id": 1, "jmeno": "Jan"}), není v poli a nástroj jej odmítne. Řešením je obalit objekt do pole: [{"id": 1, "jmeno": "Jan"}].
Zůstanou mi úvodní nuly v číslech?
Při konverzi do CSV se úvodní nuly zachovají jako text. Problém nastává při otevření CSV v Excelu nebo Google Sheets, které automaticky interpretují číselné řetězce jako čísla a úvodní nuly odstraní. Abyste tomu předešli, musíte v tabulkovém procesoru naformátovat sloupec jako text před importem.
Je převod bezpečný z hlediska soukromí?
Ano. Veškeré zpracování probíhá výhradně ve vašem prohlížeči pomocí JavaScriptu. Žádná data nejsou odesílána na server. Můžete nástroj používat i offline po načtení stránky.
Co dělat, když převod trvá příliš dlouho?
Nástroj zobrazí hlášku “This conversion is taking too long. Try a smaller file.” To obvykle znamená, že soubor je příliš velký nebo JSON obsahuje extrémně složitou strukturu. Doporučujeme rozdělit soubor na menší části nebo použít specializovaný nástroj pro zpracování velkých JSON souborů (např. jq nebo Python skript).