Komentáře k článku

JSON Schema v praxi

Historie je plná příběhů o tom, jak zaostalé kmeny dobudou vyspělou civilizaci, její výdobytky zavrhnou a v zemi následně zavládne několik staletí postupného znovuvynalézání. Totéž dnes sledujeme v přímém přenosu – JSON byl velkým protestem proti XML, jenže jak dospívá jeho vlastní ekosystém, přichází se na to, že některé staré nápady možná až tak špatné nebyly. Jedním z nich je koncept schématu – způsobu, jak zapsat, jakou strukturu a typy by měla určitá data mít. V dnešním článku se dovíte, jak můžete snadno JSON Schema využít ve své aplikaci a usnadnit si tak práci s validací dat.

Zpět na článek

5 komentářů k článku JSON Schema v praxi:

  1. odhlasit

    Když validovat, tak pořádně
    Ahoj, díky za článek.

    S JSON schematem mám pozitivní zkušenosti hlavně při validaci komplexnějších dokumentů, které mají někdy i desítky properties. Kód je pak krásně přehlednej, protože se pracuje jen s validátorem, a tudíž se nezasírá množstvím validačních podmínek.

    Rovněž se mi libí, že při vytvoření schématu (i sebejednoduššího) vývojář dbá na validaci formátu dat. Bez použití schématu se typicky jen ověřuje, zda existuje daná property, ale pak už se neřeší, jestli má validní hodnotu (kontrola jak datového typu, tak formátu hodnoty), takže je to v podstatě taková poloviční validace. Ono je hezký, že property existuje, ale když očekávam pole a přijde třeba string…

    Před ostrým nasazením je pak vhodné vybírat knihovnu i na základě rychlosti validace, protože se způsob implementace často liší.

  2. Lukáš Vlček

    Číslo řádku s validační chybou?
    Ahoj Honzo,
    umí [JavaScript] validátory nahlásit i číslo řádku (případně pozici znaku) na kterém vznika validační chyba? Pokud ano, funguje to dobře i pro vnořené objekty (schémata)?
    Dík,
    Lukáš

    1. Honza JavorekAutor příspěvku

      Re: Číslo řádku s validační chybou?
      Ahoj, podle mě to neumí, Samozřejmě, záleží na konkrétní knihovně (zrovna pro JS je jich hodně), ale beru to z toho principu, že aby taková knihovna věděla něco o řádku a znaku, musela by mít k dispozici přímo ten vstupní string s JSONem. Jenže podle mě každá taková knihovna použije nejdříve něco jako JSON.parse() a potom chodí po vzniklém objektu a kontroluje jej. V Pythonu je to stejné – nejdřív parsuješ JSON a pak ho knihovně předhodíš už přímo jako datovou strukturu. Informace o tom, jestli byl celý JSON původně zdrcnutý na jeden řádek, nebo jestli chyba vznikla na řádku osm, se do knihovny pro validaci vůbec nedostane.

  3. Lukáš Vlček

    Číslo řádku s validační chybou? (cont...)
    Všimnul jsem si, že některé validátory umí u validační chyby ohlásit „[object][property] … „, ale zatím se mi nepodařilo vyčíst, jestli je tohle dáno json-schéma specifickací, nebo pouze dobrá vůle programátora, který implementoval validátor. Je tedy pro formát chyby nějaký standard, který validační knihovny dodržují? Jak to funguje u vnořených objektů? Že by „[root_parent][parent][child][property]…“? A je tato informace poskytnuta pouze jako text? tzn. že pro potřeby strojového zpracování chybové hlášky by bylo potřeba začátek message parsovat?

    1. Honza JavorekAutor příspěvku

      Re: Číslo řádku s validační chybou? (cont...)
      O žádném standardu na tyto chyby nevím. Podle mě to JSON Schema nespecifikuje a musíš se nějak „domluvit“ s konkrétní knihovnou.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=12037