对象数组模式定义中属性的必需字段

时间:2016-01-12 08:13:29

标签: json jsonschema json-schema-validator

我有以下架构定义。图书馆是必需的。可能有很多。所以在该库对象中还有一些其他属性是必需的。但是,虽然我使用以下代码,但它没有验证。我的意思是不需要书名。作者的头衔是必需的。我该如何解决这个问题?

schema definition
    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "required": ["library"],
      "properties": {

        "library": { 
          "type": "array",
          "items": [
            {"required":["title"],
              "type": "object",

              "properties": {
                "title": {
                  "type": "string"
                },

                "author": {
                  "type": "string"
                }
              }
            }
          ]
        }}}

json输入

{"library":[]
}

预期的json输入

{"library":[{"title":"Max"}]
}

2 个答案:

答案 0 :(得分:0)

我假设你想要" json输入"失败。

如果是这样,您的问题是您没有描述一个图书馆标题缺失的图书馆。相反,您的文档说“我是一个没有图书的图书馆”。

JSON失败:

{"library":[{}]}

或者,如果你想探测空库:JSON Schema有一个minLength属性。

答案 1 :(得分:0)

您的问题有点难以理解,但我注意到您使用的是items关键字的元组形式。我确定这不是你想要的。尝试以下架构,我认为它将按照您的预期行事。

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "required": ["library"],
  "properties": {
    "library": { 
      "type": "array",
      "items": {
        "required": ["title"],
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "author": {
            "type": "string"
          }
        }
      }
    }
  }
}
相关问题