JSON-vormindaja: Kaunista ja kontrolli JSON-i võrgus tasuta
Vorminda tihendatud JSON koheselt õige taande ja lõikudega. Tasuta võrgu-JSON-vormindaja kontrollib süntaksit, kaunistab koodi ja muudab silumise kiiremaks. Töötab brauseris reaalajas vormindamisega.
JSON Vormindaja
Vormindage ja ilustage oma JSON selle lihtsa tööriistaga - vormindamine toimub automaatselt sisestamise ajal!
Vormindatud JSON ilmub siia automaatselt...
Dokumentatsioon
Mis on JSON vormindaja?
JSON vormindaja on tööriist, mis võtab JSON-teksti (JavaScript Object Notation) ja kirjutab selle ümber taandega ja reavahetustega, muutmata seejuures andmeid ennast. JSON on lihttekstivorming struktureeritud andmete salvestamiseks ja saatmiseks, mis koosneb nime-väärtuse paaridest ja loenditest. Programmid hoiavad tavaliselt kokku ruumi, eemaldades kogu liigse tühiku, mille tulemuseks on üks tihe rida, mida inimesel on raske lugeda. Vormindaja, mida nimetatakse ka ilustajaks (beautifier) või korrastajaks (pretty printer), lisab selle tühiku tagasi ühtsel viisil, nii et struktuur on nähtav. See tööriist vormindab JSON-i automaatselt selle kirjutamise või kleepimise ajal. Vormindusnuppu ei ole; väljund uueneb iga klahvivajutusega. Lähtestusnupp tühjendab sisendi ja kopeerimisnupp kopeerib vormindatud tulemuse.
JSON-i süntaksireeglid
JSON on määratletud spetsifikatsiooniga RFC 8259. Sellel on kaks konteineritüüpi:
Objektid hoiavad nime-väärtuse paare loogeliste sulgude sees:
1{"name": "John", "age": 30, "city": "New York"}
2Massiivid hoiavad järjestatud loendeid nurksulgude sees:
1["apple", "banana", "cherry"]
2JSON-i väärtus peab olema üks kuuest tüübist: string, arv, tõeväärtus (true või false), null, objekt või massiiv.
Mõned reeglid põhjustavad enamiku vigadest:
- Omaduste nimed peavad olema topeltjutumärkides.
{name: "John"}on kehtetu; õige on{"name": "John"}. - Stringid peavad kasutama topeltjutumärke, mitte ülakomasid.
- Objekti või massiivi viimasele elemendile ei tohi järgneda koma (lõpukomasid ei tohi olla).
- JSON-il ei ole kommentaarisüntaksit, kuigi selle sulgude välimus pärineb JavaScriptist.
- JSON-il ei ole
undefined-i. Puuduva väärtuse jaoks kasutanull-i.
Levinud viga on JSON-i asemel JavaScripti objektiliteraali kleepimine. {name: 'John', age: undefined} on kehtiv JavaScript, kuid mitte kehtiv JSON. JSON-i versioon on {"name": "John", "age": null}.
Kuidas see JSON vormindaja töötab
Paljud JSON-vormindajad juhivad teksti läbi JSON.parse(), et ehitada JavaScripti objekt, ja seejärel läbi JSON.stringify(), et muuta see tagasi vahedega tekstiks. Sellel edasi-tagasi teisendusel on kõrvalmõju: JavaScripti arvud on IEEE 754 topelttäpsusega ujukomaarvud, mis ei suuda täpselt esitada iga täisarvu, kui need ületavad 2^53 − 1 (9 007 199 254 740 991). ID nagu 9007199254740993 võib pärast seda teisendust muutuda arvuks 9007199254740992.
See tööriist väldib seda sammu. See loeb sisendit tähemärk-tähemärgi haaval väikese käsitsi kirjutatud parseriga ning selle asemel, et teisendada iga arv või string JavaScripti väärtuseks, kopeerib see tekstiosa täpselt sellisena, nagu see on kirjutatud, ja paigutab selle õigele taandetasemele. Kuna arve ei teisendata kunagi ujukomaarvuks, säilitavad mis tahes suurusega täisarvud oma täpsed numbrid. Kui objektis on sama võti kirjutatud kaks korda, jäetakse mõlemad koopiad alles, selle asemel et need viimaseks väärtuseks kokku suruda, mis juhtuks JavaScripti objekti ehitamisel.
Protsess samm-sammult:
- Loe järgmine element (objekt, massiiv, string, arv,
true,falsevõinull). - Kontrolli seda JSON-grammatika järgi. Lükka see tagasi, kui see rikub reeglit, näiteks jutumärkideta võti või lõpukoma.
- Kopeeri elemendi tekst väljundisse muutmata kujul.
- Lisa reavahetus ja taanne 2 tühikuga iga pesastustaseme kohta objekti või massiivi sees. Tühi objekt või massiiv jääb ühele reale kujul
{}või[]. - Korda, kuni kogu sisend on läbi loetud.
Taane on fikseeritud 2 tühikule; seda muuta ei saa. Kui sisestusväli on tühi, kuvab väljundpaneel kohatäite teksti „Vormindatud JSON kuvatakse siin automaatselt...". Kui sisend rikub JSON-i reeglit, näitab tööriist teadet „Vigane JSON: palun kontrolli sisestust" tehnilise parseriteate asemel, mis annaks täpse märgi asukoha. Brauserite sisseehitatud JSON.parse() seevastu annab oma veateates märgi asukoha.
Arvutusnäide
See minifitseeritud sisend:
1{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA"},"hobbies":["reading","hiking","photography"]}
2muutub selliseks:
1{
2 "name": "John Doe",
3 "age": 30,
4 "address": {
5 "street": "123 Main St",
6 "city": "Anytown",
7 "state": "CA"
8 },
9 "hobbies": [
10 "reading",
11 "hiking",
12 "photography"
13 ]
14}
15Iga pesastatud objekt või massiiv on taandatud ühe taseme võrra rohkem kui tema vanem, nii et seos address-i ja selle kolme välja vahel on esimesel pilgul nähtav.
Teine näide näitab, miks literaalide kopeerimine on oluline. See sisend:
1{"id":9007199254740993}
2vormindub kujule:
1{
2 "id": 9007199254740993
3}
4Numbrid jäävad täpselt sellisteks, nagu need kirjutati. Vormindaja, mis on ehitatud JSON.parse() ja seejärel JSON.stringify() peale, muudaks selle arvu vaikimisi hoopis arvuks 9007199254740992.
Levinud JSON-i vead
- Jutumärkideta omaduse nimi:
{name: "John"}. Parandus:{"name": "John"}. - Lõpukoma:
{"age": 30,}. Parandus: eemalda koma enne sulgevat looksulgu. - Sobimatud sulud:
{"data": [1, 2}. Parandus: sulge massiiv sümboliga]enne objekti sulgemist. - Suletamata string:
{"name": "John}. Parandus: lisa puuduv lõpujutumärk. - Ülakomad:
{'name': 'John'}. Parandus: kasuta topeltjutumärke. undefined,NaNvõiInfinity: ükski neist ei ole kehtiv JSON-i väärtus. Kasutanull-i või stringi.
Sagedane nende vigade allikas on objekti kopeerimine otse brauseri konsoolist või serveri logist, mis sisaldab sageli ainult JavaScriptile omast süntaksit, mida tuleb enne kehtivaks JSON-iks muutmist korrastada.
Millal kasutada JSON vormindajat
JSON-vormindajaid kasutatakse kõige sagedamini API-vastuste uurimiseks, mis saadetakse tavaliselt ribalaiuse säästmiseks minifitseerituna. Neid kasutatakse ka konfiguratsioonifailide, näiteks package.json või composer.json, käsitsi kontrollimiseks, brauseri kohalikust salvestusest või konsoolist kopeeritud andmete lugemiseks ning teisest süsteemist saadud andmestiku struktuuri mõistmiseks.
Teised viisid JSON-i vormindamiseks
- Brauseri arendajatööriistad: Chrome, Edge ja Firefox vormindavad JSON-vastuseid automaatselt Network-vahekaardi eelvaatepaneelil.
- Koodiredaktorid: Visual Studio Code vormindab avatud JSON-faili klahvikombinatsiooniga Alt+Shift+F (Mac-il Shift+Option+F). Enamikul redaktoritel on vastav otsetee või vormindamislaiendus.
- Käsurida:
jq(jq . file.json) ja Pythoni sisseehitatudpython -m json.tool file.jsonvormindavad mõlemad JSON-i terminalist.
JSON-i vormindamise lisamine koodi
Enamik programmeerimiskeeli sisaldab JSON-teeki koos taande valikuga. JavaScriptis:
1const formatted = JSON.stringify(JSON.parse(rawJson), null, 2);
2Pythonis:
1import json
2formatted = json.dumps(json.loads(raw_json), indent=2)
3Mõlemad lähenemised parsivad teksti algupäraseks andmestruktuuriks ja seejärel serialiseerivad selle uuesti koos vahedega. See on lihtne kirjutada, kuid võib arve muuta. JavaScript salvestab iga arvu topelttäpsusega ujukomaarvuna, seega 9007199254740993 tuleb tagasi kujul 9007199254740992. Python hoiab täisarvud täpsena, sest Pythoni täisarvudel pole suuruspiirangut, kuid see kirjutab siiski 1.0e2 ümber kujule 100.0 ja muudab 1e999 väärtuseks Infinity, mis ei ole kehtiv JSON. Rakendused, mis vajavad täpseid suuri täisarve, näiteks andmebaasi ID-sid, salvestavad need JSON-is sageli stringidena, mitte arvudena.
JSON-i lühiajalugu
Douglas Crockford määratles JSON-i 2000. aastate alguses, ammutades selle süntaksi JavaScripti objektiliteraalidest, kuid tehes selle kasutatavaks mis tahes keeles. RFC 4627 vormistas selle ametlikult 2006. aastal. See levis kiiresti, sest oli XML-ist lühem kirjutada ja kaardistus otse JavaScripti objektidele, mis oli oluline ajal, mil veebirakendused hakkasid andmeid taustal tooma, selle asemel et terveid lehti uuesti laadida. 2010. aastateks oli sellest saanud vaikevorming REST-API-de ja andmebaaside, näiteks MongoDB, jaoks.
Korduma kippuvad küsimused
Mis on JSON vormindaja? Tööriist, mis lisab JSON-tekstile taande, reavahetused ja vahed, et selle struktuur oleks kergesti loetav, ilma andmeid muutmata.
Kas vormindamine muudab andmeid? Ei. Vormindamine muudab ainult tühikuid. See tööriist kopeerib iga stringi ja arvu täpselt sellisena, nagu see kirjutati, seega vastavad vormindatud väljundi väärtused täpselt sisendile, sealhulgas arvud, mis on liiga suured, et neid täpselt JavaScripti arvuna salvestada.
Miks kuvatakse mulle veateade „Vigane JSON"? Sisend rikub JSON-i reeglit. Levinud põhjused on jutumärkideta omaduste nimed, lõpukoma, ülakomad, suletamata string või sobimatud sulud. See tööriist ei näita probleemi täpset märgi asukohta; sisendi kontrollimine eespool loetletud reeglite järgi leiab selle tavaliselt kiiresti.
Kas JSON võib sisaldada kommentaare? Ei. Spetsifikatsioon ei luba neid. Vormingud nagu JSONC ja JSON5 lisavad kommentaaride toe JSON-süntaksi peale juhtudeks, kus see on kasulik, näiteks konfiguratsioonifailides.
Milline on JSON-i standardne taane? Kaks tühikut on veebiarenduses kõige levinum tava ja seda kasutab ka see tööriist. Mõned stiilijuhendid kasutavad selle asemel nelja tühikut või tabeldusmärke; JSON-i spetsifikatsioon ise ei nõua kindlat taanet.
Mis vahe on JSON.parse()-l ja JSON.stringify()-l?
JSON.parse() muudab JSON-stringi JavaScripti väärtuseks. JSON.stringify() teeb vastupidist, muutes JavaScripti väärtuse JSON-stringiks, ja võtab vastu taande argumendi ilustatud väljastamiseks. See tööriist ei kasuta sisemiselt kumbagi funktsiooni, mis võimaldabki tal suuri täisarve täpselt säilitada.