Документация / JSON Schema
Массивы
Массивы в JSON бывают двух видов: списки — однородные элементы произвольной длины, и кортежи — элементы фиксированной позиции, у каждой позиции свой смысл.
Списки
items — схема, которой должен соответствовать каждый элемент.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "array",
"items": { "type": "number" }
}
[1, 2.5, 3]
[1, "два", 3]
Кортежи
prefixItems — список схем для первых элементов по позициям. items в таком случае относится к элементам
после префикса; "items": false запрещает лишние элементы.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Адрес: дом, улица, тип улицы",
"type": "array",
"prefixItems": [
{ "type": "integer" },
{ "type": "string" },
{ "enum": ["улица", "проспект", "переулок"] }
],
"items": false
}
[10, "Тверская", "улица"]
[10, "Тверская", "улица", "Москва"]
До версии 2020-12 кортежи задавались массивом схем в
items, а схема для остальных элементов — вadditionalItems. Если ваша схема на draft-07, используйте эту запись.
Содержит элемент
contains требует, чтобы хотя бы один элемент соответствовал схеме; minContains и maxContains уточняют,
сколько таких элементов должно быть.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Среди ролей должна быть ровно одна роль owner",
"type": "array",
"items": { "type": "string" },
"contains": { "const": "owner" },
"minContains": 1,
"maxContains": 1
}
["owner", "editor", "viewer"]
["editor", "viewer"]
Длина и уникальность
minItems,maxItems— число элементов.uniqueItems: true— все элементы разные (сравнение по значению, в том числе для объектов).
Неоценённые элементы
unevaluatedItems — аналог unevaluatedProperties для массивов: схема для элементов, которые не проверила ни одна
вложенная схема (prefixItems, items, contains в том числе внутри allOf и $ref).
Похожие инструменты
Обновлено: 30 сентября 2026 г.
