Validirati sintaksu JSON-a
- Nadzorna ploča
- Dokumentacija
- API
Za što se koristi JSON validator?
Validator JSON-a ima skromniju, ali precizniju ulogu od formatera: ne prepisuje ništa. Uzima niz i odgovara na binarno pitanje: je li ovaj tekst usklađen s JSON-om? RFC 8259? Ako da, alat vraća kontrolu. Ako nije, označava točno redak, stupac i isječak JSON-a oko problema, kako bismo pomogli programeru da ga odmah riješi.
U praksi, to je alat koji koristimo čim parser negdje vrati poruku o pogrešci
zagonetan poput SyntaxError: Unexpected token } u JSON-u na poziciji 217. Radije nego
prebrojite znakove rukom u uređivaču, zalijepite cijeli niz, pročitajte poziciju i vidite
uvredljivi ekstrakt.
Validacija, formatiranje: dvije različite operacije
Često brkamo to dvoje. Naš JSON format uzima važeći JSON i
prepisuje ga s čitljivim uvlačenjem. Validator je zadovoljan sintaktičkom presudom. on
ne provodi semantičku provjeru valjanosti: ne zna je li vrijednost email polja
izgleda kao e-pošta, niti ako struktura odgovara JSON shemi. Za ovo koristimo
namjenski alati (ajv u Nodeu, justinrainbow/json-schema u PHP-u).
Klasični slijed u otklanjanju pogrešaka je: prvo potvrdi (alat ukazuje na grešku u sintaksi), format zatim (sada važeći sadržaj postaje čitljiv), usporedite konačno s drugi referentni sadržaj putem našeg JSON komparatora.
Najčešće JSON greške
- Zarez na kraju:
{"a": 1, "b": 2,}. Tolerirano od strane JavaScript, ECMAScript i JSON5; odbijen čistim JSON-om. Ovo je pogreška broj 1 kod kopiranja i lijepljenja s uređivač koda. - Apostrofi umjesto dvostrukih navodnika:
{'a': 1}nije valjan. JSON prihvaća samo dvostruke navodnike oko ključeva i vrijednosti niza. - Ključevi bez navodnika:
{a: 1}, važeća JavaScript sintaksa, ali nevažeći JSON. - Kontrolni znakovi bez izlaza u nizu: neobrađeni novi red, a
tabeliranje. JSON zahtijeva
,,. - Komentari:
// komentarili/* */. Prihvaćeno u JSONC-u (config VS Code) ili JSON5, odbijeno u čistom JSON-u. - Netočno kodiranje: UTF-8 BOM na početku datoteke, netočan sadržaj Latin-1 pretvoreni. Validator često vraća generičku poruku za ove slučajeve.
- Nedovršena struktura:
{ili[bez zatvarača, uobičajeno kada skratite korisni teret prilikom kopiranja i lijepljenja.
Kako validator locira pogrešku
Alat koristi PHP-ov json_decode() s oznakom JSON_THROW_ON_ERROR. PHP
vraća poruku koja sadrži poziciju u bajtovima (pozicija 217), koju pretvaramo u
par redak/stupac brojeći prijelome redaka prije pomaka. Isječak od približno 80 znakova je
zatim izrežite položaj kako biste dali kontekst. To je općenito dovoljno za identifikaciju
pogreška: krivo postavljen citat, dodatni zarez, nedostajuća zagrada.
Upozorenje: pozicija koju prijavljuje PHP nije uvijek uvredljivi karakter. Ona je
često nakon greške, kada parser odustane. Ako isječak prikazuje "name":
"Alice", }, stvarna pogreška je zarez, a ne vitičasta vitičica.
Tipični slučajevi upotrebe
- Oštećena konfiguracija:
composer.json,package.json,tsconfig.jsonkoji sprječava pokretanje izgradnje. Zalijepimo, vidimo liniju, ispravimo. - Skraćeni API odgovor: Proxy je smanjio korisni teret. Struktura nije završena, validator to prijavljuje.
- Webhook Payload: Usluga treće strane šalje neispravan JSON. Validator dopušta kako biste uočili problem na strani pošiljatelja bez poniranja u kod aplikacije.
- JSON konstruiran ulančavanjem: praksa koju treba izbjegavati, ali uobičajena, posebno u bashu ili u SQL-u. Validator otkriva neizbježne dvostruke navodnike.
Ograničenja alata
Validator ne provjerava valjanost prema shemi. Ne kaže da mu nedostaje teren
e-mail, da vrijednost nije cijeli broj ili da očekivani niz nema točnu duljinu.
Za ove strukturne provjere koristimo JSON shemu. Validator također ne ispravlja
JSON: ne pokušava dodati zagradu koja nedostaje niti ukloniti dodatni zarez. To je izbor
: automatsko ispravljanje prečesto skriva stvarne pogreške.
Često postavljana pitanja
Koja je razlika s linterom?
Linter ide dalje: također provjerava pravila stila (abeceda, konvencije imenovanja), otkriva duplicirane vrijednosti, predlaže poboljšanja. Validator ostaje usklađen sintaktičkom.
Moj JSON je valjan, ali ga moja aplikacija odbija?
Provjerite kodiranje (UTF-8 bez BOM-a), ograničenje veličine na strani poslužitelja, očekivane vrste. JSON sintaktički ispravan možda i dalje ne odgovara shemi aplikacije.
Čuva li validator moj JSON?
Ne. Obrada je sinkrona na strani poslužitelja, bez postojanosti. Za vrlo osjetljive podatke,
i dalje preferiraju lokalnu provjeru putem jq ili PHP skripte.
Primjer zahtjeva
curl -X POST https://cdrn.fr/api/v1/tools/json-validator/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Ulazna shema
| Polje | Tip | Obavezno | Zadano |
|---|---|---|---|
input |
text | ✓ | – |
Krajnje točke
GET https://cdrn.fr/api/v1/tools- ispisuje sve dostupne alateGET https://cdrn.fr/api/v1/tools/json-validator- dohvaća shemu ovog alataPOST https://cdrn.fr/api/v1/tools/json-validator/execute- izvršava ovaj alat s JSON payloadom