Ověřit syntaxi JSON
- Dashboard
- Dokumentace
- API
K čemu slouží JSON validátor?
JSON validátor má skromnější, ale přesnější roli než formátor: nic nepřepisuje. Bere řetězec a odpovídá na binární otázku: je tento text JSON konformní RFC 8259? Pokud ano, nástroj vrátí ruku. Pokud ne, přesně indikuje řádek, sloupec a výňatek JSON kolem problému, aby developerovi pomohl okamžitě opravit.
V praxi je to nástroj, který se používá, jakmile parser někde vrátí kryptickou chybovou
zprávu typu SyntaxError: Unexpected token } in JSON at position 217. Místo
ručního počítání znaků v editoru vložíme kompletní řetězec, čteme pozici a vidíme
chybný výňatek.
Validace, formátování: dvě odlišné operace
Často je zaměňujeme. Náš JSON formátor bere validní JSON a
přepisuje ho s čitelnou indentací. Validátor se spokojuje se syntaktickým verdiktem.
Neprovádí sémantickou validaci: neví, zda hodnota pole email
připomíná email, ani zda struktura odpovídá JSON Schema. Pro to se používají
dedikované nástroje (ajv v Node, justinrainbow/json-schema v PHP).
Klasický řetězec v debugu: validovat nejdřív (nástroj indikuje syntaktickou chybu), formátovat pak (nyní validní payload se stává čitelný), porovnat nakonec s jiným referenčním payloadem přes náš JSON comparator.
Nejčastější JSON chyby
- Koncová čárka (trailing comma):
{"a": 1, "b": 2,}. Tolerovaná JavaScriptem, ECMAScriptem a JSON5; odmítnutá čistým JSON. Je to chyba č. 1 při kopírování z editoru kódu. - Apostrofy místo dvojitých uvozovek:
{'a': 1}je nevalidní. JSON přijímá pouze dvojité uvozovky, kolem klíčů jako řetězcových hodnot. - Nekvotované klíče:
{a: 1}, validní JavaScript syntax ale nevalidní JSON. - Neescapované kontrolní znaky v řetězci: surové zalomení řádku,
tabulátor. JSON vyžaduje
\n,\t,\r. - Komentáře:
// komentářnebo/* */. Přijímané v JSONC (VS Code config) nebo JSON5, odmítnuté čistým JSON. - Nesprávné kódování: UTF-8 BOM na začátku souboru, obsah v latin-1 špatně převedený. Validátor pro tyto případy často vrací obecnou zprávu.
- Neukončená struktura:
{nebo[bez zavření, časté při oříznutí payloadu při kopírování.
Jak validátor lokalizuje chybu
Nástroj používá json_decode() z PHP s vlajkou JSON_THROW_ON_ERROR. PHP
vrací zprávu obsahující pozici v bajtech (position 217), kterou převedeme na
řádek/sloupec dvojici počítáním zalomení řádků před offsetem. Výňatek asi 80 znaků je
pak vyříznut kolem pozice pro poskytnutí kontextu. To obvykle stačí pro identifikaci
chyby: špatně umístěná uvozovka, čárka navíc, chybějící závorka.
Pozor: pozice hlášená PHP není vždy přesně chybný znak. Často je
po chybě, v okamžiku, kdy parser vzdal. Pokud výňatek ukazuje "name":
"Alice", }, skutečná chyba je čárka, ne složená závorka.
Typické případy použití
- Poškozená konfigurace:
composer.json,package.json,tsconfig.json, které brání startu buildu. Vložíme, vidíme řádek, opravíme. - Oříznutá API odpověď: proxy oříznul payload. Struktura není ukončena, validátor to signalizuje.
- Webhook payload: třetí služba posílá špatně tvarovaný JSON. Validátor umožňuje konstatovat problém na straně odesílatele bez ponoření do aplikačního kódu.
- JSON konstruovaný konkatenací: praxe k vyhnutí, ale běžná, zejména v bashi nebo SQL. Validátor odhaluje neescapované dvojité uvozovky.
Limity nástroje
Validátor neprovádí validaci proti schématu. Neříká, že chybí pole
email, že hodnota není celé číslo nebo že očekávané pole nemá správnou délku.
Pro tyto strukturální ověření se používá JSON Schema. Validátor také neopravuje
JSON: nepokouší se přidat chybějící složenou závorku, ani odstranit čárku navíc. Je to volba
: automatická oprava příliš často maskuje skutečné chyby.
Často kladené otázky
Jaký je rozdíl s linterem?
Linter jde dál: ověřuje také stylová pravidla (abecedně, konvence pojmenování), detekuje duplikované hodnoty, navrhuje vylepšení. Validátor zůstává u syntaktické konformity.
Můj JSON je validní, ale aplikace ho odmítá?
Ověřte kódování (UTF-8 bez BOM), limit velikosti na straně serveru, očekávané typy. Syntakticky správný JSON přesto nemusí odpovídat aplikačnímu schématu.
Uchovává validátor můj JSON?
Ne. Zpracování je synchronní na straně serveru, bez perzistence. Pro velmi citlivá data
preferujte stejně lokální validaci přes jq nebo PHP skript.
Ukázka požadavku
curl -X POST https://cdrn.fr/api/v1/tools/json-validator/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Vstupní schéma
| Pole | Typ | Povinné | Výchozí |
|---|---|---|---|
input |
text | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všechny dostupné nástrojeGET https://cdrn.fr/api/v1/tools/json-validator- získá schéma tohoto nástrojePOST https://cdrn.fr/api/v1/tools/json-validator/execute- spustí tento nástroj s JSON payloadem