python - 如果可选属性无效,JSON Schema 会抛出验证错误
问题描述
我有一个如下所示的 json 模式,它具有三个可选的属性高度、重量和体积。但我想在这里做以下额外检查:
- 如果传递了除了身高、体重和体积之外的任何其他属性,那么它应该会抛出一个错误
不确定如何实现这一点,因为这些是可选属性。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"options": {
"type": "object",
"properties": {
"height": {
"type": "number"
},
"weight": {
"type": "number"
},
"volume": {
"type": "number"
}
}
}
}
}
解决方案
你要找的是additionalProperties
关键。来自JsonSchema 文档
additionalProperties 关键字用于控制额外内容的处理,即名称未在 properties 关键字中列出的属性。默认情况下,允许任何其他属性。
所以,这你会变成:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"options": {
"type": "object",
"properties": {
"height": {
"type": "number"
},
"weight": {
"type": "number"
},
"volume": {
"type": "number"
}
},
"additionalProperties": false
}
}
}
据我了解,这是自 以来支持的draft 00
,所以应该没问题draft 4
,但只是为了让您知道,第 8 版就在这里。
推荐阅读
- nestjs - 无法验证第一个证书 - Nestjs
- vulkan - vulkan:VkImageMemoryBarrier
- angularjs - 角度js中的日期格式没有改变想要在角度js中获得dd/mm/yyyy格式
- flutter - “如何在一个行小部件中创建两个文本小部件”
- gitlab-ci - GitlabCI 管道仅使用来自 master 的代码运行
- javascript - 使用 Javascript 的 Twilio 可编程视频
- selenium - 悬停在 Windows 8.1 和 Firefox 60.4 组合的硒测试中不起作用
- shell - 运行shell命令时Jenkins文件执行错误
- angular - 如何使用 Redux 存储我的用户身份验证(令牌)?
- sql - 关系的集合。NoSQL 与 SQL