JSON模式中的多值枚举?

Gol*_*den 2 arrays validation json jsonschema

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

[ 'foo', 'bar' ]
Run Code Online (Sandbox Code Playgroud)

可能的值是有限的。例如,有效值为foo,bar和baz。

现在,当数组仅包含有效值,且不超过一个值,但可以具有任意数量的值时,该数组即为有效。

为有效数组的例子是[ 'foo' ],[ 'foo', 'bar' ]和[ 'bar', 'baz' ]。无效阵列的例子是[],[ 'foo', 'foo' ]和[ 'bar', 'something-else' ]。

如何使用JSON模式进行验证?到目前为止,我已经弄清楚了array提供minItems和uniqueItems属性的类型。我还不能弄清楚的是:如何允许多个(但仅有效)值?我知道有enum,但这仅允许一个值,而不允许多个值。

有人可以帮忙吗?

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

Ben*_*ker 7

更清楚地说明解决方案:

{
  "type": "array",
  "items": {
    "type": "string",
    "enum": [ "foo", "bar", "baz" ]
  },
  "uniqueItems": true,
  "minItems": 1
}
Run Code Online (Sandbox Code Playgroud)

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


Gol*_*den 2

好吧,我自己搞定了\xe2\x80\xa6

\n\n

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

\n\n

通过这种方式,您可以确保每个单独的项目都是具有有效值的字符串,然后对整个数组 \xe2\x98\xba\xef\xb8\x8f 强制执行此操作

\n