我有一个包含字符串的数组,例如:
[ 'foo', 'bar' ]
可能的值有限。例如,有效值为foo
,bar
和baz
。
现在,当数组只包含有效值,没有多于一次的值时,该数组应该是有效的,但它可以有任意数量的值。
有效数组的示例包括[ 'foo' ]
,[ 'foo', 'bar' ]
和[ 'bar', 'baz' ]
。无效数组的示例包括[]
,[ 'foo', 'foo' ]
和[ 'bar', 'something-else' ]
。
如何使用JSON架构进行此验证?到目前为止,我已经找到了提供array
和minItems
属性的uniqueItems
类型。我还想知道的是:如何允许多个(但只有有效)值?我知道有enum
,但这只允许一个值,而不是多个值。
有人可以帮忙吗?
PS:以防万一重要,我正在使用带有Node.js的ajv模块来运行验证。
答案 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' ]
。
这样可以确保每个单项都是一个有效值的字符串,然后对整个数组强制执行此操作☺️