Par šo rīku
JSON formatēšana (bieži saukta par skaistu drukāšanu vai izdaiļošanu) izmanto kompaktu JSON un pievieno atstarpes — rindiņu pārtraukumus, atkāpes, konsekventas atstarpes, lai padarītu struktūru redzamu cilvēku lasītājiem. Compact JSON ir pareizais pārraides formāts: tas samazina baitus pa vadu un krātuvi. Formatēts JSON ir pareizais pārbaudes formāts: atkāpes hierarhija vienā mirklī atklāj ligzdoto struktūru, padara atšķirības jēgpilnas un ļauj izstrādātājiem atrast konkrētus laukus, neparsējot dokumentu.
Šis formatētājs parsē ievadi kā JSON, lai apstiprinātu tās derīgumu, un pēc tam to atkārtoti izstaro ar konsekventu atkāpi. Nederīga ievade rada kļūdu, kas norāda uz sintakses problēmu. Derīga ievade tiek pārformatēta neatkarīgi no tā, cik kompakts vai netīrs bija avots. Atkāpe pēc noklusējuma ir divas atstarpes, kas atbilst visizplatītākajai JavaScript konvencijai.
Formatētājs piedāvā arī samazināšanu (apgriezto darbību), kas noņem visas nevajadzīgās atstarpes, lai izveidotu mazāko derīgo JSON. Samazināta izlaide ir noderīga ražošanas pārraidei; formatēta izvade ir noderīga izstrādei un atkļūdošanai.
Kāpēc formatēt JSON
Dziļi ligzdotu JSON nolasīšana bez atkāpes būtībā nav iespējama — struktūra ir tehniski klāt, bet neredzama. Pat vidēji sarežģīts JSON gūst milzīgus ieguvumus no formatēšanas. Kodu pārskatītājiem, API atkļūdotājiem un ikvienam, kas mēģina izprast datu lietderīgo slodzi, ir nepieciešams formatēts JSON, lai redzētu, kas tur patiesībā ir.
Formatējot tiek uztvertas arī kļūdas. Ja JSON neizdodas parsēt formatēšanas laikā, kļūdas ziņojums norāda precīzu sintakses problēmas atrašanās vietu — bieži vien trūkst komats, atslēga bez pēdiņām vai izkliedēts beigu komats, ko ģenerējošā sistēma nav atzīmējusi. Formatētājs ir vienkāršākais pieejamais JSON pārbaudītājs.
Tehniskās detaļas
Formatētājs izmanto JSON.parse un JSON.stringify — vienu un to pašu pāri katrā JavaScript izpildlaikā. Parsēšana notiek saskaņā ar RFC 8259 (pašreizējā JSON specifikācija), pieņemot stingru JSON, bet noraidot JavaScript objektu burtus, komentārus, beigu komatus un citus JSON5 paplašinājumus.
JSON.stringify pieņem atkāpes argumentu: skaitli (atstarpes) vai virkni (pielāgotas atkāpes rakstzīmes, piemēram, tab). Formatētājs atklāj abas opcijas. Izvade objektiem tiek kārtota avota secībā (kopš ES2015 saglabāja rekvizītu ievietošanas secību visos galvenajos dzinējos).
Malas gadījumi: lieli skaitļi, kas pārsniedz Number.MAX_SAFE_INTEGER, parsējot zaudē precizitāti (zināms JSON ierobežojums; izmantojiet virknes vērtības ID, kas pārsniedz 2^53). Unikoda atsoļi virknēs tiek saglabāti burtiski. No katras rindas tiek noņemtas beigu atstarpes.
Bieži uzdotie jautājumi
- Kāda veida JSON kļūdas atklāj šis rīks?
- Saskaņā ar RFC 8259 JSON specifikāciju rīks nosaka trūkstošus komatus, nesaskaņotas iekavas/iekavas, nederīgas virknes atsoļu, beigu komatus, vienas pēdiņas un citus sintakses pārkāpumus.
- Vai tas var apstrādāt ļoti lielus JSON failus?
- Jā. Formatētājs apstrādā JSON jūsu pārlūkprogrammā, izmantojot vietējo JavaScript parsēšanu, tāpēc tas efektīvi apstrādā failus līdz pat vairākiem megabaitiem. Īpaši lieliem failiem (50 MB+) apstrādes laiks ir atkarīgs no jūsu ierīces.
- Vai tas atbalsta JSON ar komentāriem (JSONC)?
- Standarta JSON neļauj komentēt. Ja jūsu ievade satur komentārus, pārbaudītājs tos atzīmēs kā kļūdas. Lai saņemtu JSONC atbalstu, pirms formatēšanas noņemiet komentārus.
- Vai formatēšana mainīs manas datu vērtības?
- Nē. Formatēšana pielāgo tikai atstarpi un atkāpi — jūsu datu veidi, vērtības un struktūra paliek tieši tāda pati.
- Vai tiek atbalstītas JSON5 funkcijas (komentāri, beigu komats)?
- Nē. Formatētājs stingri ievēro RFC 8259. JSON5 līdzekļi izraisa parsēšanas kļūdas. Lai strādātu ar JSON5, vispirms konvertējiet uz standarta JSON, izmantojot JSON5 parsētāju.
- Vai mans JSON ir augšupielādēts serverī?
- Nē. Parsēšana un formatēšana pilnībā notiek jūsu pārlūkprogrammā, izmantojot iebūvētās JSON funkcijas.
- Vai lieli skaitļi zaudēs precizitāti?
- JavaScript attēlo skaitļus kā 64 bitu pludiņus, tāpēc veseli skaitļi virs 2^53 (apmēram 9 kvadriljoni) zaudē precizitāti. ID vai citas lielas veselas vērtības saglabājiet tās kā virknes JSON.
- Vai es varu sakārtot atslēgas alfabēta secībā?
- JSON.stringify nešķiro atslēgas. Izmantojiet atsevišķu kārtošanas darbību (vai formatētāju ar kārtošanas atbalstu), lai pirms virkņu sakārtošanas sakārtotu atslēgas pēc alfabēta.