#arrays #json #jsonschema #json-schema-validator
Вопрос:
Я хотел бы разделить свойства в соответствии с их типом, например:
{
"type": "object",
"additionalProperties": false,
"properties": {
"allOf": [
{ "$ref": "type/blue.json#/definition" },
{ "$ref": "type/red.json#/definition" }
]
}}
моя проблема в том, что при ссылке на него (#ref) он не распознает никаких свойств, а при добавлении дополнительных свойств он выдает мне ошибку
в файлах blue.json и red.json у меня определены два разных поля, например:
# blue.json
"definition": {
"name": {
"type": "string"
}
}
# red.json
"definition": {
"age": {
"type": "string"
}
}
и ошибка, которую он мне выдает, выглядит так, как будто он не распознал поле «возраст» и поле имени в файле red.json и blue.json из-за «Дополнительных свойств = false».
Если бы вы могли мне помочь, пожалуйста, я был бы очень благодарен
Ответ №1:
Это то, для чего предназначено ключевое слово «unevaluatedProperties» — оно «просматривает» подсхемы, содержащие ключевые слова «свойства» (и дополнительные свойства, а также свойства шаблонов), принимая во внимание эти подсхемы при проверке того, какие свойства не были определены и, следовательно, не разрешены.
Обратите внимание, что это ключевое слово является новым для draft2019-09, поэтому, если вы используете оценщик draft7 или более ранних версий, оно недоступно.