限制Json中的多个项目

时间:2018-06-13 06:15:54

标签: jsonschema

我正在创建一个JSON模式,其中一个字段是一个数组字段,可以有两个自定义类型。现在我希望这个字段可以有一个自定义类型,其中max item为1,另一个为0到n。

"field-1": {
    "type": "array",
    "system-generated": true,
    "anyOf": [{
            "items": {
                "$ref": "customItem1"
            }
        }, {
            "items": {
                "$ref": "customItem2"
            }
        }
    ]
}

考虑到上述情况,我希望field-1具有customItem1 max一个实例,customItem2具有0到n个实例。

1 个答案:

答案 0 :(得分:1)

不幸的是,没有办法强制数组包含特定数量的内容。您可以做的最接近的是强制在数组中存在某些内容(1到n)。

如果“customItem1”始终是第一项,则可以完成。

{
  "type": "array",
  "anyOf": [
    {
      "items": [
        { "$ref": "#/definitions/customItem1" }
      ],
      "additionalItems": { "$ref": "#/definitions/customItem2" },
    },
    {
      "items": { "$ref": "#/definitions/customItem2" }
    }
  ],
  "definitions": {
    "customItem1": { "type": "string" },
    "customItem2": { "type": "boolean" }
  }
}