在JSON Schema中如果我们有“additionalProperties”:在根级别为false并且“additionalProperties”:true嵌套我们如何解决这个假定的“冲突”
例如
{
"id": "someId",
"type": "object",
"additionalProperties": false,
"properties": {
"storage": {
"type": "object",
"additionalProperties": true
"properties": {
"type": { "enum": [ "disk" ] },
"device": {
"type": "string",
"pattern": "^/dev/[^/]+(/[^/]+)*$"
}
},
"required": [ "type", "device" ]
}
}
}
是否覆盖了另一个?
答案 0 :(得分:2)
他们不会覆盖。它们的范围仅限于JSON模式级别。
答案 1 :(得分:2)
JSON Schema是一个约束系统,因此您只能添加约束,永远不会删除它们。如果同时适用html,body
和"additionalProperties": true
,则效果就像只有"additionalProperties": false
一样(因为它是更严格的约束)。
此外,false
仅“知道”同一架构对象中的additionalProperties
和properties
。它无法“看到”子模式(内联或引用)。因此,上面的架构不允许任何属性。
请注意,在草案08中可能会添加一个可以“看到”子文档的类似关键字,尽管我们还没有弄清楚它是如何工作的。目前,没有JSON Schema关键字以这种方式运行,因此添加这样的功能是一项复杂的工作。但这是08年草案的主要目标。