首页 > 解决方案 > JSON Schema - 名为“type”的字段

问题描述

我在多个系统之间有一个现有的 JSON 数据馈送,我无法控制无法更改。我的任务是为此提要编写架构。现有的JSON部分看起来像这样:

 "ids": [
            { "type": "payroll", "value": "011808237" },
            { "type": "geid",  "value":  "31826" }
           ]

当我尝试为此定义一个 JSON 模式时,我最终得到了一个如下所示的模式:

"properties": {
    "type": {                   <====================== PROBLEM!!!!
        "type": "string",
        "enum": [ "payroll", "geid" ]
    },
    "value": {
        "type": [ "string", "null" ],
        "pattern": "^[0-9]*$"
    }
}

正如您可能猜到的那样,当 JSON 验证器在标记为“问题!!!”的行上点击该“类型”时 它会感到不安并抛出一个关于 type 需要如何成为字符串或数组的错误。

标签: jsonschema

解决方案


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

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

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


推荐阅读