У меня есть следующая схема, в которой массив values
должен принимать только объекты типа value
.Я использую Newtonsoft.Json v11.0.2 для проверки.
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://some.thing/json",
"type": "object",
"definitions": {
"value": {
"$id": "/definitions/value",
"required": ["a", "b", "c"],
"properties": {
"a": {
"$id": "/properties/value/a",
"type": "string"
},
"b": {
"$id": "/properties/value/b",
"type": "string"
},
"c": {
"$id": "/properties/value/c",
"type": "string"
}
}
}
},
"required": ["values"],
"properties": {
"values": {
"$id": "/properties/values",
"type": "array",
"items":
{
"$id": "/properties/values/item",
"$ref": "/definitions/value"
},
"uniqueItems": true
}
}
}
Это работает, так как не проверяет что-то вроде
{
"values": [
{
"a": "a2",
"b": "b2"
}
]
}
, но действительно проверяет
{
"values": [
{
"a": "a2",
"b": "b2",
"c": "c3"
},
"string"
]
}
, чего не должно быть.
Как я могу заставить только value
s быть в массиве?"additionalItems": false
ограничивает количество предметов, а "additionalProperties": false
внутри "предметов", похоже, ничего не делает, так что это тоже не то, что я ищу.