JSON-ból Excel: a hierarchikus adatok lapos táblázatba sűrítése
A lap egy JSON-fájlt tölt be, és XLSX-formátumú Excel-táblázatot állít elő belőle. A konverzió automatikusan leegyszerűsíti a JSON hierarchikus szerkezetét egy lapos táblázattá: az objektumkulcsokból oszlopfejlécek lesznek, az objektumok tömbjei sorokká alakulnak, a beágyazott kulcsok pedig pont-útvonalú nevekkel (például address.city) jelennek meg. A felhasználó előnézetben ellenőrizheti az eredményt, majd letöltheti a kész táblázatot.
A JSON típusos és egymásba ágyazható: tartalmazhat objektumokat, tömböket, számokat, logikai értékeket és null értékeket. Egy lapos táblázat ezt a hierarchiát közvetlenül nem tudja reprezentálni. A konverzió ezért egy leegyszerűsítési szabályt alkalmaz (pont-útvonalú kulcsok), amelyre a CSV-ből vagy Excelből történő átalakításkor nincs szükség, hiszen azok már eleve laposak. A célformátum, az XLSX, egy tömörített XML-munkafüzet, amely natívan képes tárolni a számok és logikai értékek adattípusát – ellentétben a CSV-vel, amely mindent szöveggé egyszerűsít. A lap azonban nem őriz meg semmilyen képletet vagy cellastílust; kizárólag a JSON-forrás látható, statikus adatait írja ki.
A JSON felépítése és a lapos táblázat korlátai
A JSON (JavaScript Object Notation) két alapvető adatszerkezetre épül: objektumokra (kulcs-érték párok rendezetlen halmaza) és tömbökre (értékek rendezett listája). Az értékek típusai: sztring, szám, logikai (true/false), null, objektum vagy tömb. Ez a rugalmasság teszi lehetővé, hogy egyetlen JSON-fájl akár több szint mélyen egymásba ágyazott adatokat tartalmazzon.
Egy lapos táblázat ezzel szemben csak kétdimenziós: sorokból és oszlopokból áll, minden cella egyetlen értéket tartalmaz. A JSON beágyazott objektumait ezért fel kell bontani. A lap egy egyszerű, de hatékony módszert használ: az egyes beágyazott kulcsokat pontokkal elválasztva fűzi össze. Például egy {"address": {"city": "Budapest", "zip": 1011}} objektumból két oszlop lesz: address.city és address.zip. Ez a megoldás emberileg olvasható, és a legtöbb táblázatkezelőben továbbra is kereshető és rendezhető.
Fontos korlát, hogy a tömbök kezelése bonyolultabb. Ha egy objektum egy tömböt tartalmaz (például {"items": [{"name": "a"}, {"name": "b"}]}), a lap nem bontja ki a tömböt külön sorokká. Ehelyett a teljes tömb JSON-sztringgé alakul, és egyetlen cellába kerül.
A leegyszerűsítés folyamata: objektumok és tömbök kezelése
A lap a JSON-t egyetlen munkalapra konvertálja. Nem hoz létre több munkalapot, és nem visz át képleteket vagy formázást. A leegyszerűsítés pontos algoritmusa a következő:
- Objektumok tömbje: Ha a JSON egy objektumokból álló tömb (például
[{"nev": "Anna", "kor": 30}, {"nev": "Béla", "kor": 25}]), minden objektum egy sor lesz, a kulcsok pedig oszlopfejlécek. A hiányzó kulcsok üres cellákat eredményeznek. - Beágyazott objektumok leegyszerűsítése: Amint fentebb említettük, a beágyazott objektumok kulcsait pontokkal fűzik össze. Például az
{"user": {"name": "Péter", "age": 40}}objektumból két oszlop lesz:user.nameésuser.age. Ha a beágyazás több szint mély, a lánc hosszabb lesz (példáulcompany.address.city). - Tömbök kezelése: Ha egy objektum egy tömböt tartalmaz (például
{"id": 1, "tags": ["a", "b"]}), a lap a teljes tömböt JSON-sztringgé alakítja, és egyetlen cellába helyezi. Például azitemscella[{"sku":"A"},{"sku":"B"}]sztringet tartalmazza. - Tömbök tömbje: Ha a JSON egy tömbökből álló tömb (például
[["a", 1], ["b", 2]]), a lap ezt is sorokká alakítja, és nem generál fejlécet – az első belső tömb egyszerűen a munkalap első sora lesz.
A leegyszerűsítés nem tökéletes: a mélyen beágyazott struktúrák vagy a változó szerkezetű objektumok (ahol a kulcsok nem konzisztensek) nehezen kezelhetők. Ilyenkor érdemes előre strukturálni a JSON-t, vagy más konverziós stratégiát választani.
Adattípusok megőrzése: számok, logikai értékek és null kezelése
Az XLSX formátum egyik előnye a CSV-vel szemben, hogy natívan képes tárolni a különböző adattípusokat. A lap ezt a képességet kihasználja:
- Sztringek: Minden sztring típusú érték karakterláncként kerül a cellába.
- Számok: A JSON-ban számként megadott értékek (például
100,3.14) számokként kerülnek az XLSX-be. Az Excel ezeket később felhasználhatja képletekben, rendezheti vagy formázhatja őket. - Logikai értékek: A
trueésfalseértékek logikai típusként kerülnek a táblázatba. Az Excel ezeket IGAZ/HAMIS formában jeleníti meg, és támogatja a logikai műveleteket. - Null: A JSON-beli
nullérték üres cellát eredményez az XLSX-ben. Ez különbözik a0számtól vagy a""üres sztringtől. Fontos, hogy anullés a hiányzó kulcs is üres cellát ad, így a felhasználónak kell eldöntenie, hogy szüksége van-e a különbségtételre.
A CSV ezzel szemben mindent szöveggé egyszerűsít, így a számok elveszítik típusukat, a logikai értékek pedig "true" vagy "false" sztringgé válnak. Ezért ha az adattípusok megőrzése fontos, az XLSX formátum megfelelőbb választás.
Fájlfeldolgozás korlátai és hibaüzenetek
A lap szigorú ellenőrzéseket alkalmaz a hibák elkerülése érdekében. Az alábbi hibaüzenetek jelenhetnek meg:
- "Choose a CSV, JSON or XLSX file." – Ha a kiválasztott fájl kiterjesztése nem CSV, JSON vagy XLSX.
- "This file is too large. Use a file under ‹max›." – Ha a fájl mérete meghaladja a megengedett maximumot, ami 8 MB.
- "This JSON is invalid or not table‑shaped." – Ha a JSON szintaktikailag hibás, vagy nem lehet táblázattá alakítani.
- "This file has no table rows." – Ha a JSON üres tömb, vagy bár szerkezete megfelelő, nincs benne adatsor.
- "This table has more than ‹max› rows." – Ha a sorok száma meghaladja a lap által kezelhető maximumot, ami 10 000 sor.
- "This table has more than ‹max› columns." – Ha az oszlopok száma meghaladja a maximumot, ami 200 oszlop.
- "Conversion cancelled." – Ha a felhasználó megszakítja a folyamatot.
- "This conversion is taking too long. Try a smaller file." – Ha a konverzió túl sokáig tart, és a lap időtúllépést észlel (kb. 12 másodperc után).
Ezek a korlátok biztosítják, hogy a lap ne próbáljon meg feldolgozhatatlan fájlokat kezelni, és egyértelmű visszajelzést adjon a felhasználónak.
Kliensoldali feldolgozás és adatvédelem
A konverzió teljes egészében a böngészőben történik: a fájl nem töltődik fel a szerverre. Ez azt jelenti, hogy az adatok nem hagyják el a felhasználó gépét, ami fontos lehet érzékeny vagy üzleti adatok esetén. A lap csak a JavaScript-kódot tölti le, ami a böngészőben végzi el a feldolgozást, majd generálja az XLSX fájlt, amelyet a felhasználó letölthet.
Ez a megközelítés gyorsabb is, hiszen nincs szükség hálózati kommunikációra, de hardverkorlátokba ütközhet: a böngésző memóriája és feldolgozási kapacitása véges. Ezért a nagy fájlok lassúak lehetnek, vagy akár le is fagyhatnak. A lap ezért korlátozza a fájlméretet és a sorok/oszlopok számát, hogy a felhasználói élmény elfogadható maradjon.
Gyakorlati használat: kinek és miért hasznos
A lapot elsősorban olyan felhasználóknak tervezték, akik hierarchikus JSON adatokkal dolgoznak, és ezeket lapos táblázatba szeretnék alakítani elemzés vagy megosztás céljából. Gyakori forgatókönyvek:
- API-válaszok feldolgozása: Sok REST API JSON formátumban ad vissza adatokat, gyakran beágyazott objektumokkal. A konverzió lehetővé teszi, hogy ezeket az adatokat Excelben táblázatos formában lehessen látni, akár további elemzéshez.
- Konfigurációs fájlok: JSON formátumú konfigurációs fájlok (például Node.js alkalmazásoknál) gyakran tartalmaznak egymásba ágyazott kulcsokat. A leegyszerűsítés segíthet áttekinteni a beállításokat.
- Adatbázis-exportok: Egyes adatbázisok JSON formátumban exportálnak adatokat. A konverzió lehetővé teszi, hogy ezeket az adatokat Excelben nyissák meg, képleteket alkalmazzanak vagy diagramokat készítsenek.
- Együttműködés: Ha egy csapat tagjai különböző eszközöket használnak (például fejlesztők JSON-t, üzleti elemzők Excelt), a konverzió áthidalja a szakadékot.
A lap nem helyettesíti a speciális ETL-eszközöket (például a Power Query-t), de egyszerű, gyors megoldást kínál egy fájl konvertálására, anélkül, hogy kódot kellene írni.
GYIK
1. Miért kapok "This JSON is invalid or not table‑shaped" hibát? Ez a hiba akkor jelenik meg, ha a JSON fájl szintaktikailag hibás, vagy nem alakítható táblázattá. Például egy lezáratlan zárójel vagy egy vessző a végén okozhatja.
2. Mit tegyek, ha a JSON fájl túl nagy? A lap korlátozza a fájlméretet 8 MB-ra. Ha a fájl túl nagy, bontsa kisebb részekre, vagy használjon olyan eszközt, ami streamelt feldolgozást támogat. A hibaüzenet pontosan megmondja a maximális méretet.
3. Hogyan kezeli a lap a beágyazott tömböket?
Ha egy objektum egy tömböt tartalmaz, a teljes tömb JSON-sztringgé alakul, és egyetlen cellába kerül. Például az items cella [{"sku":"A"},{"sku":"B"}] sztringet tartalmazza.
4. Lehet a JSON-ban lévő képleteket átvinni az Excelbe?
Nem. A lap csak a JSON statikus adatait írja ki, képletek átvitelére nincs lehetőség. Ha egy "=SUM(A1:A10)" sztringet tartalmaz, az szó szerint szövegként jelenik meg a cellában, nem pedig számított összegként.
5. Miért nem látok cellaformázást a letöltött Excel fájlban? A lap nem őriz meg formázást, mivel a JSON nem tartalmaz ilyen információt. A kapott XLSX fájl egyszerű, formázatlan táblázat lesz, amelyet az Excelben szabadon lehet tovább formázni.
6. Biztonságos a fájlfeltöltés? Igen, mert a konverzió a böngészőben történik, a fájl nem hagyja el a számítógépet. Nincs szükség szerverre feltöltésre, így az adatok nem kerülnek ki harmadik félhez.