[英]Can “additionalProperties” apply to nested objects in JSON Schema?
我正在开发一个接受以下 JSON 的应用程序:
{
"gd": { "enabled": true, "show_counts": true },
"ra": { "enabled": true }
}
我开发了一个 JSON 模式来验证这个输入,允许一些键是可选的,其他键是必需的,以及一些最少数量的属性。 它运作良好,看起来像这样:
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"additionalProperties": false,
"properties": {
"gd": {
"type": "object",
"required": [ "enabled" ],
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"show_counts": { "type": "boolean" }
}
},
"ra": {
"type": "object",
"required": [ "enabled" ],
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" }
}
}
},
"minProperties": 1
}
让我烦恼的一件事是每个 object 都冗余地指定了"additionalProperties": false
。 我想在顶层指定一次,JSON 文档中的任何地方都不应允许架构中未指定的任何属性。
那可能吗?
在最新的草案 (2019-09) 中,您可以通过定义所有模式派生自的“基本模式”来做到这一点:
{
$defs: {
base_object: {
unevaluatedProperties: false
},
},
$ref: '#/$defs/base_object',
type: 'object',
// additionalProperties: false does not need to be stated here
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.