我正在使用json-schema并且只想允许在此文件中声明的属性通过验证.例如,如果用户在其json对象中传递"name"属性,则该模式将失败,因为此处未将"name"列为属性.
是否有一些类似于"必需"的功能只允许列出的属性通过?
{
"$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"
]
}
Run Code Online (Sandbox Code Playgroud)
}
and*_*abs 23
在您的定义中提供:
"required": [] "additionalProperties": false演示:
没有"additionalProperties": false:

和"additionalProperties": false:

仅供参考 - 看起来标准的 v5 将描述“禁止未知属性”验证模式。
因此,与其将此要求作为格式的一部分(正如 Chris Pitman 在评论中所说,这会损害未来的可扩展性),您可以简单地指示您的验证器将未知属性标记为错误。因此,它就像一种对开发人员有用的超严格验证模式。
一些验证器已经支持这个(例如tv4):
var result = tv4.validateMultiple(data, schema, checkRecursive, banUnknownProperties);
Run Code Online (Sandbox Code Playgroud)
使用此工具,checkRecursive如果您的数据可能具有循环引用,则应使用此工具,并且banUnknownProperties将完全按照您的意愿执行操作,而无需使用"additionalProperties":false.
| 归档时间: |
|
| 查看次数: |
18991 次 |
| 最近记录: |