JSON į CSV konvertavimo įrankis: kaip veikia ir ką svarbu žinoti
Šis įrankis leidžia konvertuoti JSON failą į CSV formatą tiesiog naršyklėje – jokių duomenų į serverį nekeliama. Skirtingai nei konvertacijose tarp CSV ir Excel arba Excel ir JSON, ši kryptis išlygina hierarchinį, tipizuotą duomenų formatą į plokščią, netipizuotą lentelę. JSON palaiko objektus, masyvus, skaičius, Bulio reikšmes ir null įdėtosiose struktūrose. CSV neturi tipų, įdėjimo ir lapų – konvertavimo metu prarandama visa tipų informacija, įdėtoji struktūra ir formatavimas. Šiame straipsnyje paaiškinama, kaip šis procesas veikia, kokios taisyklės galioja ir kokios klaidos dažniausiai pasitaiko.
Plokštinimo metodika: kaip JSON virsta lentele
JSON formatas leidžia kurti hierarchines struktūras – objektus objekto viduje, masyvus su mišriais tipais ir pan. CSV yra eilučių ir stulpelių lentelė be jokios hierarchijos. Įrankis taiko taškinio kelio (dot-path) žymėjimą, kad išsaugotų bent dalį struktūrinės informacijos.
Pavyzdžiui, jei JSON objekte yra įdėtasis laukas:
{
"vardas": "Jonas",
"adresas": {
"miestas": "Vilnius",
"gatve": "Gedimino pr. 1"
}
}
Po konvertavimo CSV stulpeliai bus: vardas, adresas.miestas, adresas.gatve. Taškas atskiria lygmenis, todėl naudotojas gali atkurti pradinę struktūrą, nors pati hierarchija CSV formatu nėra išlaikoma.
Dvi pagrindinės konvertavimo situacijos:
- Objektų masyvai – kiekvienas masyvo elementas tampa eilute, o objekto raktai – stulpeliais. Įdėtieji objektai plokštinami taškiniu keliu.
- Masyvų masyvai – kiekvienas vidinis masyvas tampa eilute, o elementai – stulpeliais. Šiuo atveju stulpelių pavadinimų nėra, nes nėra raktų.
Jei JSON struktūra nėra "lentelės pavidalo" – t. y. ne vienas objektų masyvas arba masyvų masyvas – įrankis atvaizduoja klaidą: „Šis JSON yra netinkamas arba nėra lentelės pavidalo.“ Tai reiškia, kad pavienis objektas, mišrus masyvas arba objektas su nevienodais raktais nebus konvertuotas. Prieš konvertuodami visada patikrinkite, ar jūsų JSON atitinka šį reikalavimą.
Delimiterio svarba: kablelis, kabliataškis ar tabuliavimo simbolis
CSV (angl. Comma-Separated Values) pavadinime yra žodis „kablelis“, tačiau realybėje naudojami įvairūs skyrikliai. Įrankis siūlo tris variantus: kablelį (,), kabliataškį (;) ir tabuliavimo simbolį (\t).
| Delimiteris | Dažniausiai naudojamas | Ypatumai |
|---|---|---|
Kablelis (,) |
JAV, Didžioji Britanija | Standartinis CSV formatas, tačiau gali kilti problemų, jei duomenyse yra kablelių (pvz., „Vilnius, Lietuva“). |
Kabliataškis (;) |
Vakarų Europa, Lietuva | Daugelis Europos regionų naudoja kabliataškį, nes kablelis naudojamas kaip dešimtainis skyriklis. |
Tabuliavimo simbolis (\t) |
Techniniai duomenys, TSV | Išvengia komų ir kabliataškių problemų, tačiau mažiau palaikomas biuro programose. |
Kadangi CSV naudoja skyriklius, įterpti kableliai, kabliataškiai ir eilučių lūžiai duomenyse turi būti kabutėse. Įrankis tai daro automatiškai – jei reikšmėje yra skyriklis, kabutė arba naujos eilutės simbolis, ji apgaubiama dvigubomis kabutėmis, o pačios kabutės dubliuojamos. Pavyzdžiui, reikšmė Jonas "Jonukas" Petraitis tampa "Jonas ""Jonukas"" Petraitis".
Duomenų tipų praradimas: ką reikia žinoti
CSV neturi tipų – visos reikšmės yra eilutės. Konvertuojant prarandama ši informacija:
- Skaičiai tampa eilutėmis. Pvz.,
42pavirsta į"42". - Bulio reikšmės (
true/false) tampa eilutėmis. Nėra jokios konvencijos, ar jos bus mažosiomis raidėmis, ar ne – išlaikoma originali teksto forma. nullreikšmės tampa tuščiais langeliais (be jokios eilutės), nebent JSON raktas nurodonullkaip reikšmę.- Įdėtos struktūros prarandamos – išlieka tik taškiniu keliu pažymėti stulpeliai.
- Pirmieji nuliai (leading zeros) skaičiuose gali būti prarasti, nes JSON skaičiai nelaiko pirmųjų nulių. Pvz.,
"00123"JSON faile yra eilutė, o ne skaičius, todėl jis išsaugomas kaip"00123". Tačiau jei JSON raktas nurodo skaičių00123, tokios reikšmės nebūna – JSON specifikacija to neleidžia. Jei jūsų duomenims svarbūs pirmieji nuliai, prieš konvertuodami įsitikinkite, kad jie yra eilutės, o ne skaičiai. - Formulės, kodai – įrankis konvertuoja tik matomas reikšmes, jokios formulės nėra skaičiuojamos ar vykdomos.
Šis tipų praradimas yra neišvengiamas dėl pačios CSV formato prigimties. Jei reikia išlaikyti tipų informaciją, geriau naudoti kitus formatus, pvz., JSON arba XML.
Kaip atrodo išvestis: eilučių, stulpelių skaičius ir failo dydis
Po konvertavimo įrankis parodo peržiūros lentelę ir pateikia šiuos duomenis:
- Eilučių skaičius – kiek eilučių (išskyrus antraštę, jei yra) yra išvesties CSV faile.
- Stulpelių skaičius – kiek stulpelių yra lentelėje. Tai atitinka unikalių, taškiniu keliu išplėstų raktų skaičių.
- Failo dydis – kiek baitų užima generuotas CSV failas.
Šie rodikliai padeda patikrinti, ar konvertavimas vyko teisingai. Pavyzdžiui, jei JSON faile yra 100 objektų, o kiekvienas objektas turi 10 laukų, tikėkitės 100 eilučių ir 10 stulpelių (plius antraštė). Jei kai kurie objektai turi papildomų laukų arba jų struktūra skiriasi, stulpelių skaičius gali skirtis – įrankis išplečia visus unikalius raktus.
Klaidos ir apribojimai: ką daryti, kai nepavyksta
Įrankis turi griežtus apribojimus, kad išvengtų per didelių failų ir ilgų konvertavimo laikų. Čia pateikiami visi galimi klaidų pranešimai ir jų priežastys:
- „Pasirinkite vieną failą pirmiausia.“ – bandote konvertuoti, kai nepasirinktas joks failas.
- „Pasirinkite CSV, JSON arba XLSX failą.“ – kai failo formatas neatitinka leidžiamų formatų (JSON šiuo atveju yra pagrindinis).
- „Pasirinkite kitą išvesties formatą.“ – nurodytas išvesties formatas nėra CSV (nors čia jis visada CSV, ši klaida gali pasirodyti, jei kažkas negerai su konfigūracija).
- „Šis JSON yra netinkamas arba nėra lentelės pavidalo.“ – JSON negali būti konvertuotas, nes jis nėra objektų masyvas arba masyvų masyvas.
- „Šis failas yra per didelis. Naudokite failą, mažesnį nei ‹max›.“ – failo dydis viršija leistiną limitą (tikslus skaičius nurodomas klaidoje).
- „Ši lentelė turi daugiau nei ‹max› eilučių.“ – konvertavimo metu generuojama per daug eilučių.
- „Ši lentelė turi daugiau nei ‹max› stulpelių.“ – per daug stulpelių (dažniausiai dėl labai giliai įdėtų objektų).
- „Nepavyko konvertuoti šio failo.“ – neapibrėžta klaida, kai konvertavimas nutrūksta.
- „Konvertavimas atšauktas.“ – naudotojas nutraukė konvertavimą arba naršyklė blokavo procesą.
- „Ši konvertacija užtrunka per ilgai. Pabandykite mažesnį failą.“ – konvertavimas viršijo leistiną laiko limitą.
Visos klaidos atvaizduojamos naudotojui, kad jis galėtų imtis veiksmų – pataisyti failą, sumažinti dydį arba pakeisti struktūrą.
Kodėl apdorojimas naršyklėje yra svarbus: privatumo aspektas
Visi duomenys apdorojami tik naudotojo naršyklėje – niekas nėra siunčiama į išorinius serverius. Tai reiškia, kad:
- Jokie įkelti duomenys nepalieka jūsų kompiuterio.
- Nereikia rūpintis, ar serveris saugo jūsų duomenis, ar juos perduoda trečiosioms šalims.
- Nereikia prisijungimo prie interneto – konvertavimas veikia ir neprisijungus, nebent naršyklė blokuoja JavaScript vykdymą (pvz., dėl saugumo nustatymų).
- Jokios sesijos, slapukai ar analizės įrankiai nėra susiję su konvertavimo procesu.
Tai ypač aktualu, kai dirbate su jautriais duomenimis (asmens duomenys, finansinė informacija, konfidencialūs API atsakymai). Galite konvertuoti failą ir nedelsiant ištrinti originalą bei rezultatą – jokie duomenys niekur nėra išsaugoti.
Dažniausiai užduodami klausimai (DUK)
Ką daryti, jei JSON struktūroje nėra masyvo?
Įrankis konvertuoja tik lentelės pavidalo duomenis – vieną objektų masyvą arba masyvų masyvą. Jei turite pavienį objektą, pirmiausia įdėkite jį į masyvą su vienu elementu ([{...}]). Jei turite keletą objektų, bet jie nėra masyve, sukurkite masyvą, kuriame kiekvienas objektas bus atskiras elementas.
Ar galiu konvertuoti JSON, kuriame yra specialiųjų simbolių, pvz., kirčiuotų raidžių?
Taip, jei JSON faile naudojamas UTF-8 kodavimas (tai yra įprasta). CSV išvestis taip pat bus UTF-8, todėl kirčiuotos raidės (ą, č, ę, ė, į, š, ų, ū, ž) ir kiti Unicode simboliai bus išsaugoti. Jei CSV failą atidarote programoje, kuri nesupranta UTF-8 (pvz., senesnėje Excel versijoje), gali tekti nurodyti importuojant UTF-8 kodavimą.
Kodėl konvertavus prarandama įdėtoji struktūra (pvz., objektas objekto viduje)?
CSV formatas yra plokščias – jis neturi galimybės saugoti hierarchinių ryšių. Įrankis išsaugo dalį struktūros naudodamas taškinį kelią (pvz., adresas.miestas), tačiau pati hierarchija (kad adresas yra objektas, o ne eilutė) prarandama. Jei reikia išlaikyti pilną struktūrą, geriau naudoti JSON arba XML.
Ar failas yra įkeliamas į serverį?
Ne. Visi duomenys apdorojami tik jūsų naršyklėje. Niekas nėra siunčiama į jokį išorinį serverį. Tai užtikrina privatumą ir duomenų saugumą. Galite tai patikrinti išjungę interneto ryšį po failo įkėlimo – konvertavimas vis tiek veiks.
Ką reiškia klaida „Ši lentelė turi daugiau nei ‹max› eilučių“?
Tai reiškia, kad konvertavimo metu generuojamas CSV failas turi daugiau eilučių, nei leidžiama (nurodytas skaičius klaidos pranešime). Tai gali atsitikti, kai JSON masyve yra labai daug objektų arba kai masyvas yra labai giliai įdėtas ir plokštinimas sukuria daug eilučių. Sprendimas: sumažinkite failo dydį (pašalinkite nereikalingus objektus) arba suskaidykite JSON į mažesnes dalis.
Ar galiu nustatyti, kaip turi būti plokštinami įdėtieji objektai?
Įrankis naudoja fiksuotą taškinio kelio metodą. Nėra galimybės pasirinkti kitą plokštinimo strategiją (pvz., glaustiną JSON kodą viename langelyje). Jei reikia kitokio plokštinimo, prieš konvertuodami pakeiskite JSON struktūrą rankiniu būdu.