Validirati sintakso JSON-a
- Nadzorna plošča
- Dokumentacija
- API
Za kaj se uporablja validator JSON?
Preverjevalnik JSON ima skromnejšo, a natančnejšo vlogo kot oblikovalnik: ne prepisuje nič. Vzame niz in odgovori na binarno vprašanje: ali je to besedilo skladno z JSON? RFC 8259? Če da, orodje vrne nadzor. Če ni, označuje natančno vrstico, stolpec in izvleček JSON okoli težave, da bi razvijalcu pomagali, da jo takoj odpravi.
V praksi je to orodje, ki ga uporabimo takoj, ko razčlenjevalnik nekje vrne sporočilo o napaki
skrivnostno, kot je SyntaxError: Unexpected token } v JSON na položaju 217. Raje kot
ročno preštejte znake v urejevalniku, prilepite celoten niz, preberite položaj in poglejte
žaljivi izvleček.
Preverjanje, oblikovanje: dve različni operaciji
To dvoje pogosto zamenjujemo. Naš oblikovalnik JSON sprejema veljaven JSON in
prepiše z berljivim zamikom. Preverjevalnik je zadovoljen s sintaktično sodbo. On
ne izvaja semantičnega preverjanja: ne ve, ali je vrednost polja email
izgleda kot e-pošta, niti če se struktura ujema s shemo JSON. Za to uporabljamo
namenska orodja (ajv v Node, justinrainbow/json-schema v PHP).
Klasično zaporedje pri odpravljanju napak je: najprej preveri (orodje pokaže sintaktično napako), format nato (zdaj veljavna vsebina postane berljiva), končno primerjaj z drugo referenčno vsebino prek našega primerjalnika JSON.
Najpogostejše napake JSON
- Končna vejica:
{"a": 1, "b": 2,}. Tolerira JavaScript, ECMAScript in JSON5; zavrnil čisti JSON. To je napaka št. 1 pri kopiranju in lepljenju iz urejevalnik kode. - Apostrofi namesto dvojnih narekovajev:
{'a': 1}ni veljaven. JSON sprejema samo dvojne narekovaje okoli ključev in vrednosti nizov. - Ključi brez narekovajev:
{a: 1}, veljavna sintaksa JavaScript, vendar neveljaven JSON. - Neubežni kontrolni znaki v nizu: neobdelana nova vrstica, a
tabeliranje. JSON zahteva
,,. - Komentarji:
// komentarali/* */. Sprejeto v JSONC (config VS Code) ali JSON5, zavrnjen v čistem JSON. - Nepravilno kodiranje: UTF-8 BOM na začetku datoteke, nepravilna vsebina Latin-1 pretvorjen. Validator za te primere pogosto vrne generično sporočilo.
- Nedokončana struktura:
{ali[brez zaključka, pogosto ko pri kopiranju in lepljenju obrežete koristni tovor.
Kako validator najde napako
Orodje uporablja PHP json_decode() z zastavico JSON_THROW_ON_ERROR. PHP
vrne sporočilo, ki vsebuje položaj v bajtih (položaj 217), ki ga pretvorimo v
par vrstica/stolpec s štetjem prelomov vrstic pred odmikom. Izvleček s približno 80 znaki je
nato odrežite položaj, da zagotovite kontekst. To na splošno zadostuje za identifikacijo
napaka: napačno postavljen narekovaj, dodatna vejica, manjkajoči oklepaj.
Opozorilo: položaj, ki ga poroča PHP, ni vedno ravno žaljiv. Ona je
pogosto po napaki, ko je razčlenjevalnik obupal. Če delček prikazuje "name":
"Alice", }, dejanska napaka je vejica, ne oklepaj.
Tipični primeri uporabe
- Poškodovana konfiguracija:
composer.json,package.json,tsconfig.json, ki preprečuje zagon gradnje. Prilepimo, vidimo črto, popravimo. - Skrajšan odziv API-ja: strežnik proxy zmanjša obremenitev. Struktura ni dokončana, validator to sporoči.
- Webhook Payload: storitev tretje osebe pošlje napačno oblikovan JSON. Validator omogoča da opazite težavo na strani pošiljatelja, ne da bi se poglobili v kodo aplikacije.
- JSON, sestavljen z veriženjem: praksa, ki se ji je treba izogibati, vendar pogosta, zlasti v bashu ali v SQL. Preverjevalnik razkrije neubežne dvojne narekovaje.
Omejitve orodja
Validator ne preverja glede na shemo. Ne pravi, da pogreša igrišče
email, da vrednost ni celo število ali da pričakovana matrika nima pravilne dolžine.
Za te strukturne preglede uporabljamo shemo JSON. Validator prav tako ne popravi
JSON: ne poskuša dodati manjkajočega oklepaja ali odstraniti dodatne vejice. To je izbira
: samodejni popravek prepogosto skrije resnične napake.
Pogosta vprašanja
Kakšna je razlika z linterjem?
Linter gre še dlje: preveri tudi stilska pravila (abeceda, pravila poimenovanja), zazna podvojene vrednosti, predlaga izboljšave. Validator ostaja skladen sintaktični.
Moj JSON je veljaven, vendar ga moja aplikacija zavrne?
Preverite kodiranje (UTF-8 brez BOM), omejitev velikosti na strani strežnika, pričakovane vrste. JSON sintaktično pravilna morda še vedno ne ustreza shemi aplikacije.
Ali validator hrani moj JSON?
Ne. Obdelava je sinhrona na strani strežnika, brez vztrajanja. Za zelo občutljive podatke,
še vedno raje lokalno preverjanje prek jq ali skripta PHP.
Primer zahteve
curl -X POST https://cdrn.fr/api/v1/tools/json-validator/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Vhodna shema
| Polje | Tip | Obvezno | Privzeto |
|---|---|---|---|
input |
text | ✓ | – |
Končne točke
GET https://cdrn.fr/api/v1/tools- izpiše vsa razpoložljiva orodjaGET https://cdrn.fr/api/v1/tools/json-validator- pridobi shemo tega orodjaPOST https://cdrn.fr/api/v1/tools/json-validator/execute- izvede to orodje s JSON payloadom