JSON 模式 - 名为“type”的字段

Wal*_*alt 1 jsonschema

我在多个系统之间有一个现有的 JSON 数据源,我无法控制无法更改。我的任务是为此提要编写一个架构。现有的 JSON部分如下所示:

 "ids": [
            { "type": "payroll", "value": "011808237" },
            { "type": "geid",  "value":  "31826" }
           ]
Run Code Online (Sandbox Code Playgroud)

当我尝试为此定义 JSON 架构时,我最终得到了如下所示的架构片段:

"properties": {
    "type": {                   <====================== PROBLEM!!!!
        "type": "string",
        "enum": [ "payroll", "geid" ]
    },
    "value": {
        "type": [ "string", "null" ],
        "pattern": "^[0-9]*$"
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您可能猜到的那样,当 JSON 验证器在标记为“PROBLEM!!!”的行上命中该“类型”时 它会感到不安并抛出一个关于类型必须是字符串或数组的错误。

Eth*_*her 5

这是您正在使用的特定实现中的错误,应该如此报告。它应该能够很好地处理看起来像关键字的属性。事实上,元模式(有效模式的模式)正是以这种方式使用“类型”,以及所有其他关键字:例如http://json-schema.org/draft-07/schema

我想知道它是否没有使用官方测试套件(https://github.com/json-schema-org/JSON-Schema-Test-Suite)?

您没有指出您正在使用什么实现,或者什么语言,但也许您可以在这里找到替代方案:https ://json-schema.org/implementations.html#validators