1. Zkontroluj skutečný text
{"id":1,"nazev":"XML",} {"id":1,"nazev":"XML"} Vlož text do JSON validátoru. Koncová čárka před zavírací závorkou je chyba syntaxe; nejdřív ji oprav, protože bez načtené hodnoty nelze ověřovat datové schéma. Umístění a formulace parserové chyby se mezi knihovnami liší. Hledej také předchozí řádek: chyba může být nahlášena až v místě, kde parser pokračování nedokázal vyhodnotit.
U HTTP nejdřív zkontroluj status, typ a délku těla. HTML chybová stránka není vadný JSON. Odpověď 204 nemá obsah k parsování. Při práci se souborem používej očekávané UTF-8 a celé tělo, nikoli useknutou ukázku z logu.
2. Stanov pravidla schématem
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": [
"id",
"nazev"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"nazev": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
} Do datového editoru vlož opravenou knihu, do editoru schématu tento dokument a spusť validaci. Kořen musí být objekt, id a nazev jsou povinné, id musí být celé číslo alespoň 1 a název neprázdný text. additionalProperties: false zakazuje další pole. $schema označuje dialekt, který musí validátor skutečně podporovat.
3. Vyzkoušej negativní příklady
[{"nazev":"XML"},{"id":"1","nazev":"XML"},{"id":0,"nazev":"XML"},{"id":1,"nazev":""},{"id":1,"nazev":"XML","admin":true}] - Prvnímu objektu chybí id: porušení
requiredse vztahuje k objektu. - Druhý má v
/idstring místo integer. - Třetí má v
/idhodnotu pod minimum. - Čtvrtý porušuje
minLengthv/nazev. - Pátý obsahuje nepovolené pole admin.
Cesta /id je JSON Pointer, nikoli dotaz JSONPath. Přesný text hlášení závisí na validátoru, ale příčina a dotčená hodnota mají být stejné. Vložením celého pole výše bys testoval jiný kořenový typ a dostal chybu objektu místo uvedených kontrol.
4. Oprav příčinu, nikoli jen hlášení
Záznam oprav podle pravidel schématu na {"id":1,"nazev":"XML"} a validaci zopakuj. Nepřeváděj všechny řetězce na čísla: kód 001 může být identifikátor, u nějž jsou nuly významové. Nevkládej automaticky nulu do chybějícího pole jen proto, aby zmizela chyba required.
Generátor schématu z jednoho vzorku pomůže s výchozím návrhem, ale nezná skutečně povinná pole, všechny varianty ani meze. Po vygenerování je uprav a připrav sadu platných i chybných vstupů. Generátor ukázkových dat ze schématu poskytuje příklad dat, ale nepotvrzuje, že schéma obsahuje všechna pravidla potřebná pro aplikaci.
5. Odděl schéma od obchodních pravidel
Platné id nemusí existovat v databázi a uživatel nemusí mít právo záznam číst. To kontroluje aplikace. U format ověř nastavení validátoru; samotný řetězec date-time či email nemusí ve všech režimech znamenat povinnou kontrolu. Externí reference náš nástroj nestahuje, proto připrav samostatné nebo lokálně propojené schéma.
Na serveru validuj znovu i po úspěchu v prohlížeči. Omez velikost, hloubku a dobu zpracování; používej stejné schéma v testech vstupů a odpovědí API. Podrobnosti jsou v klíčových slovech, dialektech a bezpečnosti JSON. Pravidla vycházejí z JSON Schema Validation 2020-12.