我有一个json架构,它描述了一个相当复杂的API查询语法。一些属性是模式匹配的,但也需要接受除模式之外的其他值(即其他显式字符串)。我无法在众多的json架构网站中找到任何这样的例子。
一个例子:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"pattern": "<some-pattern>"
}
}
}
我希望在上面的示例中能够做的是指定$gte
可以是某组约束值中的任何一个。例如,此特定实现要求将&#34; $ gte&#34;的值约束为以下值之一:
{token}
将被服务器端的特殊值替换我已经看到了在这种情况下使用的oneOf
属性,但只有format
属性,因此我假设这是可能的,只是不确定如何使用实现它,例如它可能是这样的:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"oneOf": [
{"pattern": "<some-pattern>"},
"{token}",
"{another_token}"
]
}
}
}
对于如何实现这一目标的任何明确性都将非常感激,因为我对json模式的规范草案4或找到任何示例没有太多运气。
答案 0 :(得分:29)
如果您希望数据是固定的精确值集之一,可以使用enum
:
{
"type": "string",
"enum": ["stop", "go"]
}
因此,要在您的示例中使用此功能,请尝试:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"oneOf": [
{"pattern": "<some-pattern>"},
{"enum": ["TOKEN", "ANOTHER_TOKEN"]}
]
}
}
}
答案 1 :(得分:0)
除了已经说过的,对于日期,您可以在“oneOf”中使用“date”
https://json-schema.org/understanding-json-schema/reference/string.html#dates-and-times