0

JSON 模式验证器应如何处理对象的子对象具有默认值但父对象没有默认值的情况?

想象一下以下架构

{
    "type": "object",
    "properties": {
        "element": {
           "type": "object",
           "properties": {
               "number" : { "type": "integer", "default": 15 }
           }
        }
    }
}

针对以下 JSON 进行验证:{}结果为{}.

但它不应该导致

{
    "element": {
        "number": 15
    }
}

.

我们如何解释default-keyword?我阅读了标准中的相应行,但它们并没有进一步帮助我。

4

2 回答 2

1

验证实例的行为只返回“有效”或“无效”。JSON Schema 验证不会以任何方式更改实例,或“导致”新实例。

“默认”是一个相当通用的元数据关键字,它可以(并且被允许)对不同的人意味着不同的东西。这并不一定意味着您可以在值不存在时填写它们。这确实意味着,至少,您可以在决定创建它时假设一个初始值。

与“标题”和“描述”一样,“默认”关键字主要针对用户界面。

于 2016-12-20T08:18:49.640 回答
0

好问题..

但是有一个简单的解决方案。您可以使用enum关键字作为默认值。请参阅下面的示例,它可以为您提供它的快照

  filterType: {
            type: 'String',
            required: true,
            enum: ["Accounts", "portfolios"]
        }

所以该字段应该包含这两个值中的任何一个......我认为这对你有用......

于 2016-12-29T06:28:11.620 回答