如何在JSON模式验证中处理子对象的默认值?

时间:2016-12-19 22:12:02

标签: json jsonschema json-schema-validator json-schema-defaults

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

的情况

想象一下以下架构

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

根据以下JSON验证:{}结果为{}

但不应该导致

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

我们如何解释default - 关键字?我阅读了标准中的相应行,但他们还没有帮助我。

2 个答案:

答案 0 :(得分:1)

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

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

与“title”和“description”类似,“default”关键字主要针对用户界面。

答案 1 :(得分:0)

好问题..

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

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

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