我正在使用JSON模式验证器gem来验证响应是否带有预期的键和值类型。我的数据应该以下面的JSON格式返回:
{
"hierarchies": [
{
"hierarchyId": "123ABC456DEF789",
"depth": 1,
"hierarchyNodes": [
{
"nodeId": "ANID123456FORNODE789",
"id": "12345678"
}
]
}
]
}
我当前的架构如下(我当前缺少节点阵列):
schema = {
'$schema' => 'http://json-schema.org/draft-04/schema#',
type: 'object',
properties: {
hierarchies: {
type: 'array',
properties: {
object_items: {
type: 'object',
properties: {
hierarchyId: { type: 'string' },
depth: { type: 'integer' }
},
required: [:hierarchyId, :depth],
additionalProperties: false
}
},
required: [:object_items]
}
},
required: [:hierarchies]
}
出于某种原因,当所有这些的预期结果都为false时,以下内容返回true:
0> JSON :: Validator.validate(schema,{hierarchyies:[{}]}) =>真
0> JSON :: Validator.validate(schema,{hierarchyies:[{hierarchyId:' hi',depth:1,something:' hey'}]}) =>真
0> JSON :: Validator.validate(schema,{x:[{a:' something'}]}) =>真
预期的True结果将具有以下架构,并且只有此架构:
JSON :: Validator.validate(schema,{hierarchyies:[{hierarchyId:' id', 深度:1}]})
有人可以让我知道我在设置验证架构方面出了什么问题吗?
谢谢!
答案 0 :(得分:0)
使用@tadman提供的建议,我找到了这个解决方案:
schema = {
'$schema': 'http://json-schema.org/draft-06/schema#',
'properties': {
'hierarchies': {
'additionalItems': false,
'items': {
'additionalItems': false,
'properties': {
'depth': { 'type': 'integer' },
'hierarchyId': { 'type': 'string' },
'hierarchyNodes': {
'additionalItems': false,
'items': {
'additionalItems': false,
'properties': {
'id': { 'type': 'string' },
'nodeId': { 'type': 'string' }
},
'required': ['nodeId', 'id'],
'type': 'object'
},
'type': 'array'
}
},
'required': ['hierarchyId', 'depth', 'hierarchyNodes'],
'type': 'object'
},
'type': 'array'
}
},
'required': ['hierarchies'],
'type': 'object'
}