JSON模式枚举可以不区分大小写吗?

Ada*_*tan 8 enums case-insensitive jsonschema

JSON Schema枚举

JSON Schemas具有枚举功能,它对字符串类型的值施加约束:

{
    "type": "array",
    "items": [
        {
            "type": "number"
        },
        {
            "type": "string"
        },
        {
            "type": "string",
            "enum": ["Street", "Avenue", "Boulevard"]
        },
        {
            "type": "string",
            "enum": ["NW", "NE", "SW", "SE"]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

此架构验证诸如的值[1600, "Pennsylvania", "Avenue", "NW"].

问题

有一种优雅的方式使enum不区分大小写,这样既Avenueavenue将被接受为数组中的第三个值?

其他可能的方法

我可以anyOf在值列表上使用,并根据不区分大小写的正则表达式验证每个值 - 但这很麻烦,容易出错并且不够优雅.

jru*_*ren 6

我担心你找不到任何优雅的解决方案.有一个案例不敏感的提案的提案,并评论了几个问题.

因此,如果您无法避免这种要求,那么正则表达式解决方案是唯一可行的解​​决方案.另一种蛮力方法是拥有n个完整的枚举值列表,一个带有起始大写字母,另一个带有大写字母等,然后按照你的说法使用anyOf.您可以轻松地自动创建此json-schema.显然它不会很可读.

无论如何,我会尝试在验证之前通过预处理步骤来解决这个问题.如果存在,您可以将所需属性转换为小写,然后进行验证.我发现有点被迫使用json-schema规范来允许"脏"数据.