JSON į Excel: kaip hierarchiniai duomenys tampa plokščia lentele
Šis puslapis leidžia įkelti JSON failą ir gauti Excel XLSX formatu. Konvertavimo metu hierarchinė JSON struktūra automatiškai išlyginama į plokščią lentelę: objektų raktai tampa stulpelių antraštėmis, objektų masyarakat – eilutėmis, o įdėtiniai raktai išplečiami naudojant taškinius kelius. Galite peržiūrėti rezultatą prieš atsisiunčiant.
Kuo šis puslapis skiriasi nuo kitų? JSON yra tipizuotas ir gali būti įdėtinis – jame gali būti objektai, masyarakat, skaičiai, loginės reikšmės ir null reikšmės. Plokščia skaičiuoklė tiesiogiai negali atvaizduoti tokios hierarchijos. Konversija taiko išlyginimo taisyklę (taškiniai raktai), kurios nereikia konvertuojant iš CSV ar Excel, nes šie formatai jau yra plokšti.
Tikslinis formatas XLSX yra suspaustas XML darbaknygė, kuri gali natūraliai saugoti duomenų tipus, tokius kaip skaičiai ir loginės reikšmės (skirtingai nei CSV, kuris viską paverčia tekstu). Tačiau šis įrankis neišsaugo jokių formulių ar langelių stiliaus – įrašomi tik matomi, statiniai duomenys iš JSON šaltinio.
Kaip JSON struktūra verčiama į lentelę
JSON, reikšmė gali būti objektas (raktų-reikšmių porų rinkinys), masyarakat (sąrašas), skaičius, loginė reikšmė, tekstas ar null. Įrankis konvertuoja JSON, kuris yra „lentelės formos“ – masyarakat objektų arba masyarakat masyarakat. Tai reiškia, kad aukščiausias JSON elementas turi būti masyvas; pavienis objektas ar primityvi reikšmė nebus priimta.
Tarkime, turite JSON masyvą su objektais:
[
{
"id": 1,
"name": "Algirdas",
"address": {
"city": "Vilnius",
"street": "Gedimino pr."
},
"active": true,
"score": null
}
]
Įrankis sukurs lentelę su stulpeliais: id, name, address.city, address.street, active, score. Eilutėje bus reikšmės: 1, Algirdas, Vilnius, Gedimino pr., true, (tuščias langelis, nes null). Taškiniai raktai aiškiai parodo, iš kurio įdėtinio lygmens kiekvienas stulpelis atkeliavo.
Jei JSON masyvas yra masyarakat masyarakat (pvz., [,]), jis interpretuojamas kaip lentelė, kur kiekvienas vidinis masyarakat yra eilutė. Antraštės nekuriamos iš objekto raktų, o naudojamos numatytosios – stulpeliai žymimi sveikaisiais skaičiais (0, 1, 2...).
JSON gali turėti ir giliau įdėtinių struktūrų. Pavyzdžiui:
{
"metadata": {
"source": "test"
},
"rows": [
{ "x": 10, "y": 20 }
]
}
Ši struktūra nėra masyarakat objektų – tai objektas, kurio vienas raktas yra masyarakat. Kadangi aukščiausias elementas yra objektas, o ne masyarakat, įrankis atmes jį su klaida „This JSON is invalid or not table‑shaped.“. Norint konvertuoti, reikėtų naudoti tik masyarakat rows dalį.
Duomenų tipai: skaičiai, loginės reikšmės ir null
XLSX formatas, skirtingai nei CSV, gali saugoti skaičius kaip skaičius, o ne tekstą. Tai reiškia, kad jei JSON reikšmė yra 42 (be kabučių), Excel langelyje ji bus skaičius. Jei reikšmė yra true arba false, Excel langelyje bus loginė reikšmė (TRUE arba FALSE). Tekstinės reikšmės lieka tekstu.
Null reikšmės yra ypatingas atvejis. JSON raktas su null reikšme bus išsaugotas kaip tuščias langelis. Jei objekte trūksta rakto (pvz., vienas objektas neturi address.city), atitinkamas langelis taip pat bus tuščias. Įrankis neskiria trūkstamų ir null reikšmių – abi duoda tuščią langelį.
Skaičių išvestis nėra suapvalinama ar kitaip modifikuojama. Jei JSON yra slankaus kablelio skaičius, pvz., 3.1415926535, toks ir bus Excel langelyje. Tačiau Excel gali rodyti mažiau skaitmenų priklausomai nuo langelio pločio, bet tikroji reikšmė išlieka.
Išvesties failo savybės ir apribojimai
Įrankis sukuria vieną Excel darbalapį (sheet). Nėra galimybės kurti kelių lapų, formulių ar langelių formatavimo (pvz., šriftų, spalvų, paraščių). Visi duomenys rašomi kaip statiniai – jei JSON reikšmė yra tekstas „=SUM(A1:A10)“, Excel jį laikys tekstu, o ne formule. Tokio elgesio pakeisti negalima.
Išvesties failo dydis priklauso nuo JSON duomenų kiekio ir struktūros. Gali būti ir mažesnis, ir didesnis už šaltinio failą dėl XLSX vidinės struktūros (XML žymėjimo). Atsisiuntus failą, jį atidarę Excel programoje (ar LibreOffice Calc) matysite lentelę be jokių makrokomandų ar papildomų lapų.
Klaidos, su kuriomis galite susidurti
- „Choose one file first.“ – nepasirinkote jokio failo.
- „Choose a CSV, JSON or XLSX file.“ – pasirinktas netinkamo formato failas (pvz., PNG).
- „This file is too large. Use a file under ‹max›.“ – failas viršija leistiną dydį. Konkreti riba nurodoma vietoje
‹max›. - „This JSON is invalid or not table‑shaped.“ – JSON sintaksė klaidinga arba aukščiausias elementas nėra masyarakat (arba masyvas nėra objekto/masyvų masyarakat).
- „This file has no table rows.“ – masyarakat objektų tuščias arba masyarakat masyarakat tuščias.
- „This table has more than ‹max› rows.“ – eilučių skaičius viršija limitą.
- „This table has more than ‹max› columns.“ – stulpelių skaičius viršija limitą.
- „Conversion cancelled.“ – vartotojas nutraukė procesą.
- „This conversion is taking too long. Try a smaller file.“ – konversija trunka per ilgai; failas per didelis arba struktūra per sudėtinga.
Įrankis neperspėja, jei masyvo objektai turi skirtingus raktus. Pavyzdžiui, masyarakat su objektais {a:1} ir {b:2} sukurs du stulpelius: a ir b. Pirmoje eilutėje stulpelis b bus tuščias, antroje – stulpelis a tuščias. Tai gali sukurti retą lentelę, bet įrankis to netikrina.
Kam šis įrankis naudingas
Įrankis skirtas žmonėms, kurie turi hierarchinius duomenis JSON faile (pvz., iš API, konfigūracijos failo) ir nori juos analizuoti ar dalintis skaičiuoklės formatu. Duomenų analitikui nereikia rašyti konversijos kodo – pakanka įkelti failą ir atsisiųsti XLSX.
Kadangi konversija vyksta naršyklėje (kliento pusėje), joks failas nėra siunčiamas į serverį. Tai svarbu dirbant su jautriais duomenimis – niekas nepalieka jūsų kompiuterio.
Įrankis taip pat naudingas, kai norima išsaugoti skaičių ir loginių reikšmių tipus. Jei tuos pačius duomenis konvertuotumėte į CSV, skaičiai taptų tekstu (pvz., "42" vietoj 42), o loginė reikšmė true taptų tekstu "TRUE". Excel vėliau gali neteisingai interpretuoti tokius duomenis, ypač jei juos naudojate skaičiavimams.
Dažniausiai užduodami klausimai
Kodėl mano JSON faile sukurti stulpeliai vadinasi address.city?
Nes objektai yra įdėtiniai. Įrankis išlygina hierarchiją naudodamas taškinius raktus – raktas city objekte address tampa address.city. Tai būdas išvengti stulpelių pavadinimų dubliavimo ir aiškiai nurodyti duomenų kilmę.
Ar galiu konvertuoti JSON failą su keliomis darbaknygėmis?
Ne. Įrankis sukuria tik vieną Excel darbalapį. Jei jūsų JSON faile yra keli masyarakat (pvz., {"users": [...], "products": [...]}), jis nebus priimtas kaip lentelės formos – gausite klaidą „not table-shaped“. Tokiu atveju kiekvieną masyarakat reikia konvertuoti atskirai.
Kodėl null reikšmės tampa tuščiais langeliais, o ne tekstu „null“?
Null JSON reiškia „nėra reikšmės“. Įrankis interpretuoja tai kaip tuščią langelį, o ne kaip tekstą. Jei norite, kad null būtų rodomas kaip tekstas, prieš konvertuodami pakeiskite JSON failą (pvz., "score": null pakeiskite į "score": "null").
Ar išsaugomas langelių formatavimas iš JSON?
Ne. JSON neturi formatavimo informacijos. Įrankis rašo tik duomenis – skaičius, tekstą, logines reikšmes. Jokių šriftų, spalvų, paraščių ar langelių sujungimų nepridedama.
Ką daryti, jei gaunu klaidą „This file is too large“?
Sumažinkite failo dydį – pašalinkite nereikalingus laukus arba suskaidykite masyarakat į mažesnes dalis. Kiekvieną dalį konvertuokite atskirai.