JSON Schema: validace a pravidla pro data

JSON Schema popisuje, jaké hodnoty a strukturu smí mít JSON dokument. Parser kontroluje syntaxi; validátor schématu kontroluje povinná pole, typy hodnot a další pravidla pro data.

Autor: Aktualizováno

Od platného JSON k platným datům

Text {"vek":"dvacet"} je syntakticky platný JSON. Pro API, které očekává celé číslo, ale může být nepoužitelný. Schéma popíše typ, povinné vlastnosti, meze i povolené kombinace. Použiješ ho při příjmu API požadavku, pro konfiguraci nebo pro kontrolu exportu.

První schéma

zakaznik.schema.json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.cz/schema/zakaznik",
  "type": "object",
  "properties": {
    "jmeno": {
      "type": "string",
      "minLength": 1
    },
    "vek": {
      "type": "integer",
      "minimum": 0
    },
    "telefon": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "jmeno"
  ],
  "additionalProperties": false
}
Platná data
{"jmeno":"Jana","vek":20,"telefon":null}

type vyžaduje objekt. properties určuje pravidla pro přítomné vlastnosti. Teprve required vyžaduje jméno. additionalProperties: false odmítá další názvy. Telefon může chybět, být řetězec nebo mít hodnotu null.

Chybně: věk je řetězec
{"jmeno":"Jana","vek":"20"}

Standardní validace hodnoty nepřetypovává. Oprav vstup na číslo; neposuzuj řetězec jako celé číslo jen podle vzhledu.

$schema, $id a meta schéma

$schema určuje verzi pravidel (dialekt) a adresu metaschématu, které popisuje povolený zápis schématu. $id identifikuje schéma a nastavuje základ pro relativní odkazy. Není příkazem ke stažení souboru. Schéma je objekt s pravidly nebo logická hodnota: true přijme všechno, false nic.

Meta schéma kontroluje samotný zápis schématu. Samotné úspěšné sestavení validátoru nemusí odhalit překlep v neznámém klíčovém slově. V produkci kontroluj i schémata a používej přísný režim knihovny, pokud jej nabízí.

Jak pokračovat

Verze a omezení nástroje

K 1. 10. 2026 uvádí oficiální přehled jako aktuální publikovanou verzi 2020-12. Část Core popisuje vyhodnocování, odkazy a skupiny klíčových slov. Část Validation popisuje kontroly hodnot a popisné údaje, například title a description. Jde o specifikaci projektu, nikoli vydané RFC.

Nástroj XML.cz používá 2020-12 jako výchozí dialekt a rozpoznává také starší podporované dialekty podle $schema. Externí odkazy se automaticky nestahují. Generované schéma z jednoho vzorku je návrh: povinná pole a povolené rozsahy hodnot urči podle skutečných požadavků aplikace.

Všechny kapitoly sekce

Vyber si téma podle toho, co potřebuješ vyřešit. Seznam obsahuje i kapitoly, které se nevejdou do hlavního menu.

  • Klíčová slova Typy, properties, required, items, prefixItems, contains, format a podmínky if/then/else v JSON Schema 2020-12.
  • Skládání schémat Znovupoužití přes $defs a $ref, allOf/anyOf/oneOf/not a uzavírání složených objektů pomocí unevaluatedProperties.
  • Verze a kompatibilita Praktické rozdíly dialektů, migrace n-tic na prefixItems, přejmenování definitions a kontrola kompatibility.

Vyzkoušej schéma na čtyřech vstupech

Vlož schéma zákazníka z úvodu do editoru schématu v JSON nástroji. Potom postupně zkoušej tato data:

  • {"jmeno":"Jana","vek":20} projde: telefon je nepovinný.
  • {"vek":20} neprojde: chybí jmeno.
  • {"jmeno":"Jana","vek":"20"} neprojde: věk je text místo celého čísla.
  • {"jmeno":"Jana","role":"admin"} neprojde: schéma nepovoluje pole role.

Tyto chyby se týkají obsahu dat, nikoli zápisu JSON. Všechny čtyři dokumenty jsou syntakticky platné; liší se tím, zda splňují pravidla pro zákazníka. Při diagnostice si přečti cestu k hodnotě a porušené pravidlo. Typy a required popisuje JSON Schema Validation. Pravidlo additionalProperties je v Core.