【问题标题】:JSON Schema Array must contain a specific stringJSON Schema Array 必须包含特定的字符串
【发布时间】:2019-03-01 11:30:20
【问题描述】:

关于这个主题有几个问题,但似乎都没有解决这个特定问题,JSON Schema 上的文档也没有,所以可能无法完成。

问题是我有一个数组,可以有 4 个字符串中的任何一个作为值,很容易用这个模式实现:

...
 "attributes": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [   
          "controls",
          "autoplay",
          "muted",
          "loop"
        ]
      },
      "additionalItems": false
    }
...

所以数组中的值只能是这四个之一。然而,“控件”必须始终是数组的一部分,而其他三个是可选的。如果它是一个对象数组,我们可以将其设为必需,但我不确定如何检查具有特定值的数组。

感谢您的帮助!

【问题讨论】:

    标签: arrays json validation jsonschema


    【解决方案1】:

    您可以使用contains 关键字:

    "attributes": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [   
          "controls",
          "autoplay",
          "muted",
          "loop"
        ]
      },
      "contains": {
        "const": "controls"
      },
      "additionalItems": false
    }
    

    来自规范:

    6.4.6. contains

    此关键字的值必须是有效的 JSON 架构。

    一个数组实例对“包含”是有效的,如果它的至少一个 元素对给定架构有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-24
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多