Ответ 1
Я считаю, что вам нужно сделать это, чтобы установить additionalProperties
свойства для false. См. Спецификацию здесь
Я использую json-схему и хочу, чтобы только свойства, объявленные в этом файле, проходили проверку. Например, если пользователь передает свойство "name" в свой объект json, он потерпит неудачу в этой схеме, поскольку "name" здесь не указано как свойство.
Есть ли какая-то функция, похожая на "required", которая пропускает только перечисленные свойства?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Accounting Resource - Add Item",
"type": "object",
"properties": {
"itemNumber": {
"type":"string",
"minimum": 3
},
"title": {
"type":"string",
"minimum": 5
},
"description": {
"type":"string",
"minimum": 5
}
},
"required": [
"itemNumber",
"title",
"description"
]
}
Я считаю, что вам нужно сделать это, чтобы установить additionalProperties
свойства для false. См. Спецификацию здесь
FYI - похоже, что v5 стандарта будет описывать режим проверки запрещенных неизвестных свойств.
Поэтому вместо того, чтобы сделать это требование частью формата (который, как говорит Крис Питман в комментариях, наносит ущерб будущей расширяемости), вы можете просто проинструктировать ваш валидатор для обозначения неизвестных свойств как ошибок. Таким образом, это похоже на режим строгого режима проверки, который полезен для dev.
Некоторые валидаторы уже поддерживают это (например, tv4):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
С помощью этого инструмента checkRecursive
следует использовать, если ваши данные могут иметь циклические ссылки, а banUnknownProperties
будет делать именно то, что вы хотите, без необходимости использовать "additionalProperties":false
banUnknownProperties
"additionalProperties":false
.
Использовать строгое подтверждение свойств объектов: https://github.com/ruby-json-schema/json-schema#strictly-validate-an-objects-properties