json schema:我们可以使用" items"在一个"对象"

时间:2016-06-06 01:27:12

标签: json jsonschema json-schema-validator

关键字" items"似乎与" array"相关联在我见过的大多数json架构示例中。但是我尝试使用这个有用的工具将它与一个对象一起使用:http://www.jsonschemavalidator.net/(JSON Schema Draft 4)并且它可以工作。我找不到任何文件说明这是合法的,虽然对我来说是对的。

"value": { 
      "type": "object",
      "items": ...
}

这真的合法吗?

1 个答案:

答案 0 :(得分:1)

以下是您要查找的文档。

  

某些验证关键字仅适用于一种或多种基本类型。当实例的原始类型无法通过给定关键字验证时,此关键字和实例的验证应该成功。

     

为了说明这个概念,请以此模式为例。

{
  "items": { "type": "string" },
  "maxLength": 2,
  "required": ["foo"]
}

["foo"]验证

  • items - >通过
  • maxLength - >忽略
  • required - >忽略

{ "foo": "bar" }验证

  • items - >忽略
  • maxLength - >忽略
  • required - >通过

"foo"无法验证

  • items - >忽略
  • maxLength - >失败
  • required - >忽略

3验证

  • items - >忽略
  • maxLength - >忽略
  • required - >忽略

尽管可以这种方式编写模式,但建议不要在单个模式中混合使用类型关键字。您可以使用anyOf来获得更易读的模式。

{
  "anyOf": [
    {
      "type": "string",
      "maxLength": 2
    },
    {
      "type": "array",
      "items": { "type": "string" }
    },
    {
      "type": "object",
      "required": "foo"
    }
  ]
}