Что такое JSON Schema
JSON Schema — это спецификация описания структуры JSON-документов на самом JSON. Используется для валидации входных данных API, конфигурационных файлов, тел запросов в OpenAPI. Позволяет описать: типы полей, обязательность, диапазоны значений, форматы, регулярные выражения, условные правила.
Эволюция версий (drafts)
- Draft 4 (2013) — широко в legacy.
- Draft 6 (2017) — рефакторинг, без больших фич.
- Draft 7 (2018) — добавлен if/then/else, content* keywords. Самый стабильный для большинства проектов.
- Draft 2019-09 — отделение валидации от core, $defs вместо definitions.
- Draft 2020-12 — последний. items для массивов разделён на prefixItems / items. Используется в OpenAPI 3.1.
Распознавание форматов
Наш генератор автоматически распознаёт три самых частых формата:
- email — по regex.
- uri — по префиксу http(s)://.
- date-time — ISO 8601.
Стандартные форматы JSON Schema (можно дописать вручную): uuid, ipv4, ipv6, hostname, regex, date, time.
Использование в коде
// JavaScript / TypeScript (Ajv)
import Ajv from 'ajv';
const ajv = new Ajv();
const validate = ajv.compile(schema);
if (!validate(data)) console.error(validate.errors);
// Python (jsonschema)
from jsonschema import validate, ValidationError
try:
validate(data, schema)
except ValidationError as e:
print(e.message)
// Go (gojsonschema)
loader := gojsonschema.NewBytesLoader(schemaBytes)
docLoader := gojsonschema.NewBytesLoader(dataBytes)
result, _ := gojsonschema.Validate(loader, docLoader)- JSON Schema 2020-12 Specification. json-schema.org. json-schema.org/draft/2020-12. 2020.
- Ajv JSON Schema validator. Evgeny Poberezkin. ajv.js.org. обновляется.
- OpenAPI 3.1 — JSON Schema integration. OpenAPI Initiative. spec.openapis.org/oas/v3.1.0. 2024.
- Understanding JSON Schema. Michael Droettboom. json-schema.org/understanding-json-schema. обновляется.
