Validuoti JSON sintaksę
- Skydelis
- Dokumentacija
- API
Kam naudojamas JSON tikrintuvas?
JSON patvirtinimo priemonė atlieka kuklesnį, bet tikslesnį vaidmenį nei formatuotojas: jis neperrašo nieko. Ji paima eilutę ir atsako į dvejetainį klausimą: ar šis tekstas atitinka JSON? RFC 8259? Jei taip, įrankis grąžina valdymą. Jei ne, tai tiksliai nurodo eilutę, stulpelį ir JSON ištrauką padėti kūrėjui nedelsiant ją išspręsti.
Praktiškai tai yra įrankis, kurį naudojame, kai tik analizatorius kažkur pateikia klaidos pranešimą
paslaptingas, pvz., SyntaxError: Netikėtas prieigos raktas } JSON 217 pozicijoje. Užuot
suskaičiuokite simbolius ranka redaktoriuje, įklijuokite visą eilutę, perskaitykite padėtį ir pamatysite
nusikaltimo išrašas.
Patvirtinimas, formatavimas: dvi skirtingos operacijos
Mes dažnai painiojame abu. Mūsų JSON formatu naudojamas tinkamas JSON ir
perrašo jį su įskaitoma įtrauka. Tvirtintoją tenkina sintaksinis verdiktas. Jis
neatlieka semantinio patvirtinimo: nežino, ar el. pašto lauko reikšmė
el. laiškas, nei struktūra, atitinkanti JSON schemą. Tam mes naudojame
tam skirti įrankiai (ajv Node, justinrainbow/json-schema PHP).
Klasikinė derinimo seka yra tokia: pirmiausia patvirtinti (įrankis nurodo sintaksės klaidą), tada formatuoti (dabar galiojantis naudingasis krovinys tampa įskaitomas), palyginkite galiausiai su kitas informacinis apkrovas per mūsų JSON palyginimo priemonę.
Dažniausios JSON klaidos
- Galinis kablelis:
{"a": 1, "b": 2,}. Toleruojamas JavaScript, ECMAScript ir JSON5; paneigė grynas JSON. Tai yra #1 klaida kopijuojant ir įklijuojant iš kodo rengyklė. - Apostrofai vietoj dvigubų kabučių:
{'a': 1}netinkamas. JSON priima tik dvigubas kabutes aplink raktus ir eilučių reikšmes. - Raktai be kabučių:
{a: 1}, tinkama „JavaScript“ sintaksė, bet netinkamas JSON. - Valdymo simboliai be simbolių eilutėje: neapdorota nauja eilutė, a
lentelės sudarymas. JSON reikalauja
,,. - Komentarai:
// komentarasarba/* */. Priimta JSONC (config VS Code) arba JSON5, atmesta gryname JSON. - Neteisinga koduotė: UTF-8 BOM failo pradžioje, neteisingas Latin-1 turinys konvertuota. Šiais atvejais tikrintuvas dažnai pateikia bendrą pranešimą.
- Nebaigta struktūra:
{arba[be uždarymo, įprasta kai sutrumpinate naudingąjį krovinį kopijuodami ir įklijuodami.
Kaip tikrintuvas nustato klaidą
Įrankis naudoja PHP json_decode() su žyma JSON_THROW_ON_ERROR. PHP
grąžina pranešimą, kuriame yra pozicija baitais (217 padėtis), kurią konvertuojame į
eilutės / stulpelio pora, skaičiuojant eilučių lūžius prieš poslinkį. Maždaug 80 simbolių ištrauka yra
tada apkirpkite padėtį, kad pateiktumėte kontekstą. Paprastai to pakanka nustatyti
klaida: neteisinga citata, papildomas kablelis, trūkstamas skliaustas.
Įspėjimas: PHP nurodyta padėtis ne visada tiksliai atitinka pažeidimą. Ji yra
dažnai po klaidos, kai analizatorius pasiduoda. Jei fragmente rodomas "pavadinimas":
„Alisa“, }, tikroji klaida yra kablelis, o ne skliaustas.
Tipiški naudojimo atvejai
- Sugadinta konfigūracija:
composer.json,package.json,tsconfig.json, kurie neleidžia pradėti kūrimo. Įklijuojame, matome liniją, taisome. - Sutrumpintas API atsakymas: tarpinis serveris sumažina naudingą apkrovą. Struktūra nebaigta, tikrintojas apie tai praneša.
- Webhook naudingoji apkrova: trečiosios šalies paslauga siunčia netinkamai suformuotą JSON. Validatorius leidžia kad pastebėtumėte problemą siuntėjo pusėje, nesigilindami į programos kodą.
- JSON sukurtas sujungimo būdu: praktika, kurios reikia vengti, bet įprasta, ypač bash arba SQL. Tvirtinimo priemonė atskleidžia dvigubas kabutes be ištrūkimo.
Įrankio apribojimai
Tikrinimo priemonė netikrina pagal schemą. Jis nesako, kad jam trūksta lauko
el. paštas, kad reikšmė nėra sveikasis skaičius arba kad laukiamas masyvas yra netinkamo ilgio.
Šiems struktūriniams patikrinimams naudojame JSON schemą. Valdymo priemonė taip pat nepataiso
JSON: nebandoma pridėti trūkstamo skliausto arba pašalinti papildomo kablelio. Tai pasirinkimas
: automatinis taisymas per dažnai slepia tikras klaidas.
Dažnai užduodami klausimai
Kuo skiriasi linteris?
„Linter“ eina toliau: ji taip pat tikrina stiliaus taisykles (abėcėlę, pavadinimų taisykles), aptinka pasikartojančias vertes, siūlo patobulinimus. Tikrinimo priemonė ir toliau laikosi reikalavimų sintaksė.
Mano JSON galioja, bet programa jį atmeta?
Patikrinkite kodavimą (UTF-8 be BOM), serverio dydžio apribojimą, numatomus tipus. JSON sintaksiškai teisinga vis tiek gali neatitikti programos schemos.
Ar tikrinimo priemonė išsaugo mano JSON?
Ne. Apdorojimas yra sinchroninis serverio pusėje, be atkaklumo. Labai jautriems duomenims,
vis tiek teikia pirmenybę vietiniam patvirtinimui naudojant jq arba PHP scenarijų.
Užklausos pavyzdys
curl -X POST https://cdrn.fr/api/v1/tools/json-validator/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Įvesties schema
| Laukas | Tipas | Privalomas | Numatytasis |
|---|---|---|---|
input |
text | ✓ | – |
Galiniai taškai
GET https://cdrn.fr/api/v1/tools- išvardija visus galimus įrankiusGET https://cdrn.fr/api/v1/tools/json-validator- gauna šio įrankio schemąPOST https://cdrn.fr/api/v1/tools/json-validator/execute- vykdo šį įrankį su JSON payload