我有一个 json 模式,它描述了一个相当复杂的 API 查询语法。一些属性是模式匹配的,但还需要接受除模式之外的其他值(即其他显式字符串)。我似乎无法在众多 json 模式站点中找到任何此类示例。
一个例子:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"pattern": "<some-pattern>"
}
}
}
在上面的示例中我希望能够做的是指定
$gte
可以是一组特定的约束值中的任何一个。例如,这个特定的实现要求“$gte”的值被限制为以下之一:{token}
它在服务器端被替换为特殊值 我见过
oneOf
在这种情况下使用的属性,但仅限于 format
属性,所以我假设这是可能的,只是不确定如何实现它的语法,例如它可能是这样的:{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"oneOf": [
{"pattern": "<some-pattern>"},
"{token}",
"{another_token}"
]
}
}
}
任何关于如何实现这一点的明确将不胜感激,因为我对 json 模式的规范草案 4 或在查找任何示例方面没有太多运气。
最佳答案
如果您希望数据是一组固定的精确值之一,您可以使用 enum
:
{
"type": "string",
"enum": ["stop", "go"]
}
因此,为了适合您的示例,请尝试:
{
"type": "object",
"properties": {
"$gte": {
"type": "string",
"oneOf": [
{"pattern": "<some-pattern>"},
{"enum": ["TOKEN", "ANOTHER_TOKEN"]}
]
}
}
}
关于jsonschema 字符串属性的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532137/