【发布时间】:2017-10-11 16:10:43
【问题描述】:
我正在使用 JSON 模式验证器 gem 来验证返回的响应是否带有预期的键和值类型。我的数据应该以以下 JSON 格式返回:
{
"hierarchies": [
{
"hierarchyId": "123ABC456DEF789",
"depth": 1,
"hierarchyNodes": [
{
"nodeId": "ANID123456FORNODE789",
"id": "12345678"
}
]
}
]
}
- “层次结构”可以是 0..N 个元素的数组
- “hierarchyNodes”也可以是 0..N 个元素的数组
我当前的架构如下(我目前缺少节点数组):
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]
}
由于某种原因,当所有这些的预期结果应该为假时,以下返回真:
0> JSON::Validator.validate(schema, {hierarchies: [{}] }) => 是的
0> JSON::Validator.validate(schema, {hierarchies: [{hierarchyId: 'hi', depth: 1, something: 'hey'}] }) => 是的
0> JSON::Validator.validate(schema, {x: [{a: 'something'}] }) => 是的
预期的 True 结果将具有以下架构,并且只有此架构:
JSON::Validator.validate(schema, {hierarchies: [{hierarchyId: 'id', 深度:1}] })
谁能让我知道我在设置验证架构时出了什么问题?
谢谢!
【问题讨论】:
-
尝试使用类似JSON Schema Validator 的工具进行测试。即使添加了缺少的
,,它也发现您的示例存在错误。 -
@tadman,我看到逗号在哪里丢失了,我已经添加了它。这是一个复制错误。我会去那个网站看看能不能找到答案。
-
我仍然得到一个无效的结果
-
您是否尝试过使用像this one 这样的生成器来生成基线参考?
-
@tadman,我会尝试创建一个准确的基础。我注意到生成器可以创建“必需”属性,我认为这是我问题的一半。我会再试一次。谢谢!
标签: json ruby validation jsonschema