jsonschema字符串属性的多个值

Jef*_* U. 15 validation json jsonschema

我有一个json模式,它描述了一个相当复杂的API查询语法.一些属性是模式匹配的,但也需要接受除模式之外的其他值(即其他显式字符串).我似乎无法在众多的json架构网站中找到任何这样的例子.

一个例子:

{
    "type": "object",
    "properties": {
        "$gte": {
            "type": "string",
            "pattern": "<some-pattern>"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望在上面的示例中能够做的是指定$gte可以是任何一组约束值.例如,此特定实现要求将"$ gte"的值约束为以下值之一:

  1. 具体的日期格式
  2. {token}在服务器端使用特殊值替换的令牌

我已经看到oneOf在这种情况下使用的format属性,但只有属性,所以我假设这是可能的,只是不确定如何实现它的语法,例如它可能是这样的:

{
    "type": "object",
    "properties": {
        "$gte": {
            "type": "string",
            "oneOf": [
                {"pattern": "<some-pattern>"},
                "{token}",
                "{another_token}"
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何关于如何实现这一点的清晰度都将非常受欢迎,因为我对json模式的规范草案4或找到任何示例都没有太多运气.

clo*_*eet 36

如果您希望数据是固定的精确值集之一,您可以使用enum:

{
    "type": "string",
    "enum": ["stop", "go"]
}
Run Code Online (Sandbox Code Playgroud)

因此,要在您的示例中使用此功能,请尝试:

{
    "type": "object",
    "properties": {
        "$gte": {
            "type": "string",
            "oneOf": [
                {"pattern": "<some-pattern>"},
                {"enum": ["TOKEN", "ANOTHER_TOKEN"]}
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)