Převodník CSV na JSON

Převádějte CSV na JSON online – zdarma, okamžitě a soukromě. Váš soubor se zpracovává přímo v prohlížeči a nikdy se nikam nenahrává.

Oddělovač CSV
Výsledek

Zde se zobrazí převedené soubory a náhled.

Připraveno. Vyberte tabulkový soubor, který chcete převést.

Jak převod funguje

  • První řádek se načte jako záhlaví – jeho buňky se stanou názvy polí v JSON a každý následující řádek se převede na jeden objekt.
  • Zvolte oddělovač, který odpovídá vašim datům – čárku, středník nebo tabulátor.

Váš tabulkový soubor se převádí přímo ve vašem prohlížeči. Na servery BroBroGo se nic neodesílá.

Časté dotazy

Jak převést CSV na JSON?

Přetáhněte soubor CSV a klikněte na převést – soubor JSON bude připraven ke stažení během několika sekund, včetně náhledu výsledku. Vše probíhá přímo na vašem zařízení.

Jak velký soubor mohu převést?

Do velikosti 8 MB, 10 000 řádků a 200 sloupců na soubor. Větší datové sady je nejlepší nejprve rozdělit na menší soubory.

Proč je převod CSV do JSON složitější, než vypadá

Převod CSV (Comma-Separated Values) do JSON (JavaScript Object Notation) je úkon, který na první pohled vypadá jako mechanická operace: vzít řádky, rozdělit podle oddělovače, pojmenovat sloupce a zabalit do závorek. V praxi však narazíte na tři zásadní odlišnosti, které dělají z tohoto převodu specifický problém – a právě ty rozhodují o tom, zda výsledný JSON bude použitelný, nebo bude zdrojem chyb, které se projeví až o několik kroků dál.

Základní rozdíl je v typech dat. CSV ukládá vše jako prostý text – čísla, data, PSČ, všechny hodnoty jsou řetězce. JSON podporuje čísla, boolean hodnoty, null a vnořené struktury. To znamená, že pokud váš CSV obsahuje sloupec s cenou 42,50, výstupní JSON bude obsahovat řetězec "42,50", nikoliv číslo 42.5. Stejně tak datum 2024-01-15 zůstane textem, nestane se objektem typu Date. Nástroj automaticky nepřevádí typy – všechny hodnoty zůstávají stringy.

Druhý zásadní fakt: CSV je striktně plochá tabulka. Každý řádek má stejný počet sloupců (alespoň v ideálním případě) a každá buňka obsahuje jednu hodnotu. Z toho plyne, že výsledný JSON bude vždy polem plochých objektů – [ { "jmeno": "Jan", "vek": "30" },... ]. Nelze vytvořit vnořené objekty, pole uvnitř polí nebo hierarchické struktury, aniž byste použili dodatečná pravidla, která tento nástroj neaplikuje. Pokud potřebujete JSON s vnořením, musíte CSV předzpracovat jinde.

Třetí rozdíl se týká oddělovače. Zatímco soubory JSON nebo Excel mají pevně daný formát, CSV může používat čárku, středník nebo tabulátor. Pokud zvolíte špatný oddělovač, nástroj rozdělí buňky na špatných místech – například cena 1,200 se rozdělí na dvě hodnoty, pokud je oddělovačem čárka a vy ji zvolíte jako středník. Nástroj vyžaduje, abyste oddělovač explicitně určili.

Typový nesoulad: proč všechno zůstává textem

Každé CSV je soubor čistého textu bez metadat o datových typech. Když otevřete CSV v Excelu, program se snaží typy uhodnout – a často to dělá špatně (například u identifikátorů s úvodními nulami). Tento nástroj nic nehádá. Každá hodnota se do JSONu přenese jako string. To má praktické důsledky:

CSV hodnota Výsledek v JSONu Co byste možná čekali
42 "42" 42 (číslo)
true "true" true (boolean)
null "null" null
00123 "00123" 123 (pokud by došlo k typové konverzi)

Pokud váš JSON po převodu načtete do JavaScriptu, parser z nich stringy neodstraní automaticky. Pokud jej načtete do jazyka, který typy odvozuje (např. Python s json.loads), úvodní nuly se zachovají, protože jde o řetězce. Problém nastane teprve tehdy, když data dále zpracováváte a někde očekáváte číslo – například při matematických operacích, kde "42" + 8 v JavaScriptu dá "428", nikoliv 50.

Nástroj úmyslně neprovádí typovou konverzi, protože by ji neměl jak odvodit spolehlivě. Máte-li sloupec s textovými kódy 001, 002,... 999, konverze na číslo by je změnila na 1, 2,... 999 a data by ztratila informaci o délce. U dat, telefonních předvoleb nebo čísel produktů by to byla fatální chyba.

Oddělovač a formátování dat

CSV není jeden formát – je to rodina formátů, které spojuje pouze princip řádků a sloupců. Tři nejběžnější varianty jsou:

  • Čárka (comma) – standard RFC 4180, běžný v anglicky mluvících zemích. Desetinná tečka, oddělovač čárka.
  • Středník (semicolon) – běžný v kontinentální Evropě, protože čárka se používá jako desetinný oddělovač.
  • Tabulátor (tab) – TSV (Tab-Separated Values), často používaný pro exporty z databází, kde se čárky a středníky v datech běžně vyskytují.

Špatná volba oddělovače je nejčastější příčinou neúspěšného parsování. Pokud nahrajete soubor, který používá středníky, ale zvolíte čárku, nástroj uvidí každý řádek jako jeden sloupec, protože žádná čárka v souboru není. Naopak pokud zvolíte středník u souboru s čárkami, rozdělí se i hodnoty, které čárku obsahují uvnitř buňky – například "Praha, 1" se rozpadne na "Praha" a " 1" jako dva sloupce.

Specifikace CSV (RFC 4180) definuje, že hodnoty obsahující oddělovač, uvozovky nebo zalomení řádku musí být uzavřeny v uvozovkách a uvozovky v hodnotě musí být zdvojeny (""). V praxi však mnoho exportů tato pravidla nedodržuje. Pokud narazíte na soubor, kde buňka obsahuje čárku, ale není v uvozovkách, nástroj ji rozdělí a počet sloupců v řádku přestane souhlasit. Výsledek: nástroj zobrazí hlášku "Tento CSV nebylo možné zpracovat."

Zalomení řádku uvnitř buňky je další častý problém. Pokud je buňka správně uzavřena v uvozovkách a obsahuje \n, nástroj toto zalomení zachová jako znak \n uvnitř stringové hodnoty v JSONu. Pokud uvozovky chybí, nástroj interpretuje zalomení jako konec řádku, počet sloupců se rozpadne a parsování selže.

Limity a chybové stavy

Nástroj má pevně stanovené limity, které vycházejí z praktických omezení prohlížečového zpracování. Když některý z limitů překročíte, nezobrazí se částečný výstup, ale konkrétní chybová hláška:

  • Příliš mnoho řádků: "Tato tabulka má více než ‹max› řádků."
  • Příliš mnoho sloupců: "Tato tabulka má více než ‹max› sloupců."
  • Příliš velký soubor: "Tento soubor je příliš velký. Použijte soubor menší než ‹max›."
  • Chybějící soubor: "Nejprve vyberte jeden soubor."
  • Nesprávný formát: "Vyberte soubor CSV, JSON nebo XLSX."
  • Selhání parsování: "Tento CSV nebylo možné zpracovat."
  • Prázdný soubor (žádná datová řádka): "Tento soubor neobsahuje žádné řádky tabulky."
  • Časový limit: "Tento převod trvá příliš dlouho. Zkuste menší soubor."

Všimněte si, že nástroj kontroluje kombinaci více podmínek. Soubor může být formátem správný (CSV), ale obsahovat chybné uvozování – dostanete hlášku o nezpracovatelnosti. Pokud soubor nemá datové řádky (například jen hlavičku), není to chyba formátu, ale chybějících dat.

Srovnání s opačným směrem: CSV → JSON vs. JSON → CSV

Převod CSV do JSON je výrazně jednodušší než opačný směr. Důvod je strukturální: CSV je vždy ploché, JSON může být libovolně vnořený. Při převodu z JSON do CSV musíte řešit, jak zploštit vnořené objekty a pole – například jak z { "adresa": { "mesto": "Praha", "ulice": "Dlouhá" } } udělat sloupce adresa.mesto a adresa.ulice. Při převodu CSV do JSON toto není třeba – každý sloupec se stane jedním klíčem, každý řádek jedním objektem.

Druhý rozdíl je v typové konverzi. Při převodu JSON → CSV se čísla, boolean hodnoty a null mění na řetězce. Při zpětném převodu ale žádná automatická typová konverze neprobíhá – čísla v JSONu byste museli mít již jako stringy, nebo byste je museli konvertovat ručně. Tento nástroj to nedělá.

Třetí rozdíl: zpracování oddělovače. U JSON → CSV musíte ošetřit, že hodnota může obsahovat oddělovač (například čárku v adrese), a podle toho ji uzavřít do uvozovek. U CSV → JSON je situace opačná – nástroj musí uvozovky v CSV správně interpretovat, nikoliv je vytvářet.

Kdo a proč tuto funkci potřebuje

Nejčastějším uživatelem je vývojář, který dostal export z databáze nebo tabulkového procesoru a potřebuje data předat do JavaScriptové aplikace nebo API, které očekává JSON. Druhou skupinou jsou datoví analytici, kteří převádějí legacy CSV soubory – například adresáře s poštovními směrovacími čísly s úvodními nulami – a chtějí je uložit do JSONu, aniž by přišli o formátování. Třetí skupinou jsou týmy, které sdílejí data mezi netechnickými kolegy (pracujícími v Excelu nebo CSV) a technologickým stackem, který mluví JSON – a přitom nechtějí nahrávat citlivá data na server.

Zásadní výhoda je, že celý převod probíhá v prohlížeči. Žádná data neopouštějí váš počítač. To je klíčové při práci s osobními údaji, finančními daty nebo interními firemními seznamy. Nástroj nevyžaduje registraci, neodesílá soubor na server, neukládá historii převodů.

FAQ

Proč jsou všechna čísla v JSONu stále řetězce? Protože CSV neobsahuje informaci o datových typech. Nástroj nemůže poznat, zda 00123 je číslo 123 nebo poštovní směrovací číslo s úvodními nulami. Automatická konverze by vždy znamenala riziko ztráty dat, proto se neprovádí.

Můžu převodem vytvořit vnořený JSON? Ne. CSV je plochá tabulka, každý řádek má stejný počet sloupců a každá buňka je skalární hodnota. Výsledný JSON bude vždy polem plochých objektů. Pro vnořenou strukturu musíte data předzpracovat nebo použít jiný nástroj.

Proč se mi zobrazuje „Tento CSV nebylo možné zpracovat“? Nejčastější příčiny: chybějící uvozovky kolem hodnot, které obsahují oddělovač nebo zalomení řádku; nekonzistentní počet sloupců v různých řádcích; nebo použití kódování, které nástroj neočekává. Zkontrolujte, zda jste zvolili správný oddělovač.

Jak převedu datum z CSV do JSON jako datum? Nijak. Nástroj všechny hodnoty převede na stringy. Pokud potřebujete datum jako objekt, musíte ho po převodu ručně parsovat na straně příjemce dat (např. new Date("2024-01-15") v JavaScriptu).

Proč se mi soubor s koncovkou.xlsx nenačte? Nástroj podporuje CSV, JSON a XLSX (Excel). Pokud používáte správný formát, ale přesto se zobrazí chyba, může být soubor poškozený, příliš velký nebo obsahovat prvky, které nástroj nerozpozná (např. makra). Zkuste data exportovat z Excelu jako CSV a převést nejprve ten.

Ztratí se mi úvodní nuly v PSČ? Ne. Protože nástroj zachovává všechny hodnoty jako stringy, úvodní nuly zůstanou zachovány. Problém by nastal až ve chvíli, kdy byste JSON načetli do prostředí, které automaticky převádí řetězce na čísla – například některé databázové ovladače. V samotném JSON souboru nuly zůstanou.