Čo je konverzia JSON do Excelu a prečo nie je triviálna
JSON a Excel predstavujú dva zásadne odlišné spôsoby organizácie údajov. JSON je hierarchický formát, ktorý dokáže reprezentovať vnorené objekty, polia, čísla, booleany a hodnoty null. Excelová bunka v XLSX súbore je naopak súčasťou plochej dvojrozmernej tabuľky, kde každý stĺpec má jeden názov a každý riadok jednu hodnotu. Prevod medzi týmito svetmi preto nie je len otázkou zmeny prípony – vyžaduje si pravidlá, ako hierarchiu rozložiť do riadkov a stĺpcov.
Na tejto stránke nahráte JSON súbor a získate XLSX súbor. Nástroj automaticky sploští hierarchickú štruktúru: kľúče objektov sa stanú hlavičkami stĺpcov, polia objektov sa stanú riadkami a vnorené kľúče sa rozšíria pomocou bodkového zápisu (napríklad adresa.mesto). Zobrazí sa náhľad výsledku a počet riadkov aj stĺpcov. Vygenerovaný súbor si môžete stiahnuť.
Odlišnosť od iných konverzií (napríklad CSV do Excelu) spočíva v práve v tomto sploštení. CSV je už plochý formát – neobsahuje vnorené objekty ani polia. Preto pri prevode CSV na Excel nie je potrebné žiadne pravidlo na rozbaľovanie štruktúry. Pri JSON je práve sploštenie kľúčovou operáciou, ktorá určuje, ako budú v tabuľke vyzerať stĺpce.
Ako sploštenie hierarchie funguje – bodkový zápis kľúčov
Keď je vstupné JSON pole objektov, každý objekt sa stáva jedným riadkom. Kľúče objektu sa stanú názvami stĺpcov. Pokiaľ je hodnota pod kľúčom ďalší objekt, nástroj použije bodkový zápis: kľúč rodiča a kľúč dieťaťa spoja do jedného názvu stĺpca. Napríklad JSON:
{
"meno": "Ján",
"adresa": {
"mesto": "Bratislava",
"ulica": "Hlavná 1"
}
}
sa pretransformuje na riadok so stĺpcami meno, adresa.mesto a adresa.ulica. Táto transformácia sa rekurzívne aplikuje na všetky úrovne vnorenia.
Pokiaľ vstup obsahuje pole objektov, každý objekt je jeden riadok. Ak JSON obsahuje pole polí (array of arrays), toto pole sa berie ako tabuľka riadkov – každé vnorené pole je jeden riadok, bez pomenovaných stĺpcov. Dôležité je, že vstup musí byť „table‑shaped“ – teda musí byť buď pole objektov alebo pole polí. Inak nástroj vráti chybu „This JSON is invalid or not table‑shaped.“.
V praxi to znamená, že ak máte objekt s jedným záznamom, nie je automaticky akceptovaný – musí byť v poli. Rovnako ak obsahuje viacero vnorených polí na rôznych úrovniach, nie všetky sa dajú do takejto tabuľky zmysluplne uložiť. Nástroj vygeneruje iba jeden hárok, žiadne ďalšie hárky ani vzorce.
Podporované vstupné štruktúry a formátovanie výstupu
Vstup je presne jeden JSON súbor. Nástroj nepodporuje dávkové spracovanie ani nahrávanie viacerých súborov naraz. Maximálna veľkosť súboru je obmedzená – ak ho prekročíte, zobrazí sa hlásenie „This file is too large. Use a file under ‹max›.“ Počet riadkov a stĺpcov tabuľky je tiež limitovaný; ak presiahnete maximum, objaví sa príslušné chybové hlásenie.
Výstupom je XLSX súbor. Ide o formát, ktorý predstavuje zipovaný XML workbook – na rozdiel od CSV dokáže natívne ukladať dátové typy ako čísla, booleany a dátumy. Nástroj však nepočíta vzorce ani neprenáša žiadne formátovanie (farba buniek, orámovanie, zlúčené bunky). Zo vstupného JSON berie iba čisté dáta.
Ak je vstupné JSON pole prázdne, alebo ak po spracovaní nezostane ani jeden riadok s dátami, zobrazí sa chyba „This file has no table rows.“. Ak je konverzia zrušená používateľom, alebo ak trvá príliš dlho, nástroj zobrazí „Conversion cancelled.“ resp. „This conversion is taking too long. Try a smaller file.“.
Ako sa v XLSX zachovávajú dátové typy (a čo sa stráca)
Jedným z dôvodov, prečo používať túto konverziu namiesto exportu do CSV, je zachovanie dátových typov. CSV všetko ukladá ako text. XLSX dokáže rozlíšiť číslo (napríklad 42) od textového reťazca ("42"), boolean (true) od reťazca ("true"). V JSON sú tieto typy explicitne uvedené: 42 je číslo, true je boolean, null je null. Nástroj pri zápise do XLSX tieto typy rešpektuje.
Čo sa však nestane: JSON hodnota null sa v Exceli zobrazí ako prázdna bunka. Nie je to chyba – ide o štandardné správanie. Žiadne ďalšie pravidlá pre formátovanie (napríklad zvýraznenie chýb) nie sú implementované.
Strácajú sa vzorce. Ak by ste mali nádej, že sa z JSON dajú odvodiť vzorce (napríklad cez špeciálne kľúče), takáto funkcionalita nie je podporovaná. Rovnako nie je možné zachovať žiadne formátovanie buniek – výstup je čisto tabuľka s hodnotami.
Prehľad chybových stavov a obmedzení
- Chýbajúci súbor: „Choose one file first.“ – ak používateľ nahrá prázdny súbor.
- Nesprávny formát: „Choose a CSV, JSON or XLSX file.“ – ak typ súboru nie je jeden z podporovaných.
- Príliš veľký súbor: „This file is too large. Use a file under ‹max›.“ – maximálna veľkosť je definovaná implementačne (v texte to nie je uvedené, ale treba rešpektovať, že existuje).
- Neplatný JSON: „This JSON is invalid or not table‑shaped.“ – vstup nie je pole objektov ani pole polí.
- Prázdna tabuľka: „This file has no table rows.“ – po spracovaní nie je žiaden riadok.
- Prekročenie riadkov: „This table has more than ‹max› rows.“
- Prekročenie stĺpcov: „This table has more than ‹max› columns.“
- Zrušenie používateľom: „Conversion cancelled.“
- Časový limit: „This conversion is taking too long. Try a smaller file.“ – ak spracovanie trvá príliš dlho.
Všetky chyby sú navrhnuté tak, aby používateľ jasne vedel, čo je problém. Neexistuje možnosť „skrytého“ zlyhania – ak sa konverzia nepodarí, zobrazí sa príslušné hlásenie.
Odporúčania pre prácu s nástrojom a typické omyly
Najčastejšou chybou je nahrávanie JSONu, ktorý nie je „table‑shaped“. Napríklad objekt s jedným objektom, ale bez poľa – nástroj ho odmietne. Riešenie: skontrolujte, či je JSON na najvyššej úrovni pole. Ak nie, obalte ho do hranatých zátvoriek, teda [ {"kľúč": "hodnota"} ].
Druhým častým omylom je očakávanie, že sa zachovajú hlboké vnorené štruktúry. Sploštenie pomocou bodkového zápisu vytvorí širokú tabuľku. Ak máte tri úrovne vnorenia, stĺpce budú napríklad osoba.adresa.mesto. Pre Excel to nie je problém, ale pre ľudí môže byť ťažšie čitateľné. Odporúča sa pred konverziou odstrániť nepotrebné úrovne alebo použiť iný nástroj na normalizáciu.
Ďalšia vec: ak máte pole vnorených objektov (napríklad "deti": [{"meno": "Anna"}, {"meno": "Peter"}]), nástroj ho sploští do jedného riadku s hodnotou [object Object]? Nie – nástroj nevie priamo reprezentovať pole v bunke. Preto je potrebné takéto polia v JSON vopred „rozbalíť“ (explodovať) na samostatné riadky. Táto stránka to automaticky nerobí; ak máte takéto dáta, výstup nebude korektný a dostanete chybu alebo nečakaný výsledok.
Nakoniec – nástroj beží výlučne na strane klienta (v prehliadači). Súbor sa nikam neodosiela. To je dôležité pre dáta, ktoré sú citlivé alebo chránené. Nie je potrebné sa obávať úniku informácií na server.
FAQ – Najčastejšie otázky
Prečo mi vznikajú stĺpce ako „adresa.mesto“? Pretože nástroj používa bodkový zápis na sploštenie vnorených objektov. Kľúč rodiča a kľúč dieťaťa sa spoja bodkou – takto vznikne unikátny názov stĺpca. Je to štandardný spôsob, ako zachovať informáciu o hierarchii v plochej tabuľke.
Môžem konvertovať JSON s hlbokým vnorením (napr. 5 úrovní)?
Áno, technicky áno. Každá úroveň sa sploští a vytvorí sa stĺpec s dlhým názvom (napr. a.b.c.d.e). Excel má limit na počet stĺpcov (1 048 576 riadkov, 16 384 stĺpcov), takže ak máte príliš veľa stĺpcov, nástroj vráti chybu o prekročení limitu.
Čo sa stane s hodnotami null v JSON? Hodnota null sa v Exceli zapíše ako prázdna bunka. Žiadna špeciálna hodnota (napr. reťazec „null“) sa nepoužíva. Bunka jednoducho zostane prázdna.
Prečo sa veľkosť výstupného súboru líši od vstupu? JSON je textový formát, XLSX je zipovaný XML, ktorý obsahuje aj metadáta o hárkoch, stĺpcoch a typoch. Veľkosť sa preto môže líšiť – zvyčajne je XLSX menší, pokiaľ je JSON veľmi komprimovateľný text. Nástroj zobrazuje veľkosť výstupu v náhľade.
Je možné konvertovať JSON, ktorý obsahuje iba čísla (napr. ``)?
Nie, pretože to nie je pole objektov ani pole polí. Musí byť buď [{"hodnota": 1}, {"hodnota": 2}], alebo [,,]. V prvom prípade vznikne stĺpec hodnota, v druhom prípade jeden stĺpec bez názvu.
Môžem konvertovať viacero JSON súborov naraz? Nie, nástroj podporuje iba jeden súbor naraz. Pre dávkové spracovanie je potrebné použiť iný nástroj alebo skript.