1

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

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"}]
}
4

2 回答 2

0

我假设您希望“json 输入”失败。

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

失败的JSON:

{"library":[{}]}

或者,如果您想禁止空库:JSON Schema 有一个 minLength 属性。

于 2016-01-17T06:14:30.457 回答
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"
          }
        }
      }
    }
  }
}
于 2016-01-17T06:41:34.367 回答