JsonSchema - 定义 white-listed 组值
JsonSchema - Defining a white-listed set of values
我觉得我的问题之前不可能没有被问过,但我找不到任何答案。
如标题所示,我正在尝试创建一个 JSON 模式,当且仅当其中的值的 All 时,该模式才会验证数组在 pre-defined 集合中定义。
例如:
如果预定义集合包含{"One", "Two", "Three"}
,而我要验证的数组是["One", "Two"]
,那么数组应该是有效。
但是如果数组是["One", "Two", "Four"]
,那么数组就是无效的.
所以我知道 enum
但它没有实现我的目标,因为只要 ONE 个值在预定义集中定义,它就会验证。
我也知道 min/max-contain
组合,但它们可能会干扰预定义集合 中的 none 值必须 出现的要求。它们都可能出现,也可能不出现。
有没有人知道如何实现这样的要求?
好吧,让我们分解一下:
您想根据模式验证数组的每一项。那是 items
关键字:https://json-schema.org/understanding-json-schema/reference/array.html#items
数组的每一项都应该有一个存在于预定义集中的值。那是 enum
关键字:https://json-schema.org/understanding-json-schema/reference/generic.html#id4
放在一起:
{
"type": "array",
"items": {
"enum": [ "one", "two", "three" ]
}
}
我觉得我的问题之前不可能没有被问过,但我找不到任何答案。
如标题所示,我正在尝试创建一个 JSON 模式,当且仅当其中的值的 All 时,该模式才会验证数组在 pre-defined 集合中定义。
例如:
如果预定义集合包含{"One", "Two", "Three"}
,而我要验证的数组是["One", "Two"]
,那么数组应该是有效。
但是如果数组是["One", "Two", "Four"]
,那么数组就是无效的.
所以我知道 enum
但它没有实现我的目标,因为只要 ONE 个值在预定义集中定义,它就会验证。
我也知道 min/max-contain
组合,但它们可能会干扰预定义集合 中的 none 值必须 出现的要求。它们都可能出现,也可能不出现。
有没有人知道如何实现这样的要求?
好吧,让我们分解一下:
您想根据模式验证数组的每一项。那是
items
关键字:https://json-schema.org/understanding-json-schema/reference/array.html#items数组的每一项都应该有一个存在于预定义集中的值。那是
enum
关键字:https://json-schema.org/understanding-json-schema/reference/generic.html#id4
放在一起:
{
"type": "array",
"items": {
"enum": [ "one", "two", "three" ]
}
}