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.

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.