JSON模式中的多值枚举?

时间:2017-01-19 08:08:19

标签: arrays json validation jsonschema

我有一个包含字符串的数组,例如:

[ 'foo', 'bar' ]

可能的值有限。例如,有效值为foobarbaz

现在,当数组只包含有效值,没有多于一次的值时,该数组应该是有效的,但它可以有任意数量的值。

有效数组的示例包括[ 'foo' ][ 'foo', 'bar' ][ 'bar', 'baz' ]。无效数组的示例包括[][ 'foo', 'foo' ][ 'bar', 'something-else' ]

如何使用JSON架构进行此验证?到目前为止,我已经找到了提供arrayminItems属性的uniqueItems类型。我还想知道的是:如何允许多个(但只有有效)值?我知道有enum,但这只允许一个值,而不是多个值。

有人可以帮忙吗?

PS:以防万一重要,我正在使用带有Node.js的ajv模块来运行验证。

2 个答案:

答案 0 :(得分:3)

更清楚地阐明解决方案:

{
  "type": "array",
  "items": {
    "type": "string",
    "enum": [ "foo", "bar", "baz" ]
  },
  "uniqueItems": true,
  "minItems": 1
}

请参阅:https://spacetelescope.github.io/understanding-json-schema/reference/array.html

答案 1 :(得分:0)

好的,我自己拿到了......

您还需要提供items属性,然后为每个项目定义它必须为type: 'string'且其值为enum: [ 'foo', 'bar', 'baz' ]

这样可以确保每个单项都是一个有效值的字符串,然后对整个数组强制执行此操作☺️