繁体   English   中英

在JSON模式中,如何解析冲突的“ additionalProperties”?

[英]In JSON Schema how are conflicting 'additionalProperties' to be parsed?

在JSON模式中,如果我们在根级别具有“ 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" ]
    }
}   

}

一个会覆盖另一个吗?

它们不会覆盖。 它们的范围仅限于JSON模式级别。

JSON模式是一个约束系统,因此您只能添加约束,而不能删除它们。 如果同时应用"additionalProperties": true"additionalProperties": false ,则效果就好像只存在false (因为它是更严格的约束)。

此外, additionalProperties仅“知道”同一模式对象内的propertiespatternProperties 它不能“看到”子模式(内联或引用)。 因此,您的上述架构将不允许任何属性。

请注意,在草稿08中可能添加了可以“看到”子模式的类似关键字,尽管我们还没有弄清楚它的工作方式。 当前,没有JSON Schema关键字以这种方式运行,因此添加这样的功能是一项复杂的工作。 但这是08草案的主要目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM