JSON-Schema draft-04 - OneOf with required

时间:2017-02-07 12:33:59

标签: javascript json api validation schema

我有一个API路由,在处理逻辑之前验证json模式。

此路线可根据发送的JSON创建两种类型的“文章”。我使用OneOf来检查模式是否对应于这两种类型中的一种。

{
    "type": "object",
    "oneOf": [{
        "properties": {
            "name": {
                "type": "string",
            },
            "description": {
                "type": "string"
            }
        }
    }, {
        "properties": {
            "author": {
                "type": "string",
            },
            "editor": {
                "type": "string"
            }
        },
        "required":["author", "editor"]
    }]
} 
  • 所以第一种类型可以有名称和描述,但这些字段不是必需的。

  • 第二种类型需要作者编辑

如果仅使用作者字段发送JSON架构会发生什么? (编辑为空)

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

通过 oneOf 关键字

的定义
  

要对oneOf进行验证,给定数据必须有效   恰好是给定子模块中的一个。

在定义架构的方式中,一个对象只包含一个" author"属性将始终验证,因为第一个定义可以翻译为:

具有任何属性集的对象有效,但如果该对象包含" name"和"描述"属性,它们必须都是字符串类型。

正如您所看到的,一个只包含"作者"属性完全有效。

实际上,如果给定的对象包含" name"那么任何给定的对象只会针对第二个定义(作者,编辑)进行验证。和/或"描述"属性,它们不是字符串。

这是学习JSON模式https://spacetelescope.github.io/understanding-json-schema/

的一个很好的参考

这是一个很好的JSON Schema验证器http://www.jsonschemavalidator.net