JSON Toolkit

Co JSON Schema vlastně řeší

Shrnutí: Schema řídí strukturu a typy, nikoli obchodní význam. Zastaví chybějící pole, špatné typy a výčty mimo rozsah, zatímco pravidla jako částka nad nulou zůstávají v kódu.

Středně pokročilý~4 min čteníPublikováno 2026-10-30Aktualizováno 2026-10-30
Hranice toho, co JSON Schema umí vynutit

Stručně: nechte JSON Schema vynucovat strukturu, typy, rozsahy a formáty, zatímco pravidla napříč poli, obchodní invarianty a externí stav zůstávají v kódu; nasaďte ho pro veřejná API a sdílené payloady, nikoli pro pětipolovou interní službu.

Odpovídá na „má tato data správný tvar“, nikoli na „dávají tato data smysl“.

Co umí dobře

Strukturální úplnost. Která pole musí existovat, zda jsou povolena navíc (required, additionalProperties).

Typy. port jako číslo nebo řetězec, tags jako pole nebo skalár. Jen tohle odstraní ve vícejazyčných systémech spoustu defenzivního kódu.

Rozsahy. enum, minimum/maximum, délka řetězce a pole.

Formáty. format pro data, e-maily, URI a UUID, s validátory, které je vynucují.

Vnoření. Každá úroveň objektů a polí dostane vlastní omezení a chyby nesou přesnou cestu.

Dokumentace. Schema je smlouva. Změňte pole a diff ukáže rozsah dopadu. Také generuje typy a formuláře, takže jedna definice živí několik konzumentů.

Co neumí

Závislosti napříč poli. „Konec musí být po začátku“ lze vyjádřit pomocí if/then/else, ale výsledek je delší a hůř čitelný než tři řádky kódu.

Obchodní invarianty. „Sklad nesmí jít do záporu“ závisí na externím stavu. Schema vidí jeden dokument.

Sémantiku. price: -100 dokonale splňuje {"type": "number"}. Zda je to legální cena, je mimo znalosti Schema.

Fungující rozdělení

Vrstva Vlastník
Syntaxe: je to platný JSON Parser
Struktura: pole, typy, rozsahy, formáty JSON Schema
Sémantika: napříč poli, obchodní pravidla, externí stav Aplikační kód
Bezpečnost: velikost, hloubka, frekvence Brána / middleware

Složte to všechno na jedno místo a Schema naroste do stovek řádků s pěti úrovněmi if/then. V tu chvíli ho lidé začnou obcházet.

Kdy se vyplatí

  • Veřejná API s neznámými konzumenty
  • Několik služeb čtoucích stejný payload
  • Konfiguračně řízené systémy, kde překlepy musí selhat rychle
  • Generování typů nebo formulářů ze smlouvy

U malé interní služby s pěti poli a jedním frontendem se ručně psané kontroly udržují rychleji. Zavádět tam Schema je práce se záporným výsledkem.

Časté dotazy

Jak rozhodnout, zda nasadit JSON Schema?

Zvažte veřejné konzumenty, několik služeb čtoucích stejný payload a potřebu generovat typy nebo formuláře. U malé interní služby s pěti poli a jedním frontendem se ručně psané kontroly udržují rychleji.

Proč mají pravidla napříč poli zůstat v kódu?

„Konec musí být po začátku“ lze nacpat do if/then/else, ale výsledek je delší a hůř čitelný než několik řádků kódu. Schema také nevidí externí stav.

Má Schema validovat velikost payloadu a hloubku vnoření?

Ne. Schema popisuje strukturu, nikoli velikost nebo hloubku; tyto limity patří do brány nebo middleware vrstvy.

Další čtení