json模式,用于验证具有anyOf和oneOf要求的对象数组

我试图定义一个json模式来限制数组中包含的对象的属性.

到目前为止我所拥有的是:

{
    "title":"myCollection","properties":{
        "things":{
            "type":"array","items":[{
                "title":"thingObj","type":"object","properties":{
                    "name":{
                        "type":"string"
                    },"code":{
                        "type":"string"
                    },"type":{
                         "type":"string","enum":["dog","cat"]
                    },"rate":{
                        "type":"number"
                    },"value":{
                        "type":"number"
                    }
                },"anyOf":[{
                    "properties":{
                        "name":{
                            "type":"string"
                        }
                    },"required":["name"]
                },{
                    "properties":{
                        "code":{
                            "type":"string"
                        }
                    },"required":["code"]
                },{
                    "properties":{
                        "type":{
                            "type":"string","enum":["new","existing"]
                        }
                    },"required":["type"]
                }],"oneOf":[{
                    "properties":{
                        "rate":{
                            "type":"number"
                        }
                    },"required":["rate"]
                },{
                   "properties":{
                       "value":{
                            "type":"number"
                       }
                   },"required":["value"]
                }],"additionalProperties":false
            }]
        }
    }
}

现在给出以下jsonobj:

{
    "things": [
        {
            "name": "tabby","code": "meeow","type": "cat","value": 20
        },{
            "name": "k9","code": "woofer","type": "dog","rate": 15
        }
    ]
}

json schema validator提供了有效的响应,但此验证似乎仅适用于阵列中的第一个元素.如果删除anyOf子句中包含的所有字段或第一个元素上的oneOf子句,则验证失败.第二个数组元素上的相同内容不会引发所需的故障.如何确保针对每个阵列成员运行验证?

解决方法

这是因为你(不小心)使用了“元组输入”.当“items”的值是一个数组时,它会启用,并且它将模式与数组中的特定位置匹配.

如果将“items”(在模式中)更改为模式(不是模式数组),那么它将以相同的方式验证所有项目.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)