从 JSON 草稿 4 反向转换为 JSON 草稿 3

Back-converting from JSON draft 4 to JSON draft 3

我的情况有点奇怪。我是 运行 一个 JSON 不支持草案 4 的模式验证器,由于公司的不稳定,我坚持使用它而不是替换它。我们的开发人员给我的模式是 draft 4 格式,所以我必须手动完成并反向转换它,尤其是必填字段。

这一切都很好,直到我遇到这样的事情(考虑这个伪代码;我仍然掌握 JSON 的窍门):

    "items": {
        "type": "array",
        "required" : true,
        "items": [ 
              {...},
              "required": ["0", "1"]  // This bit right here
        ],
    }

我听说它基本上是这样说的,"The first two items in the array are required." 但我找不到在 JSON 草案 3 中表达这一点的方法。它是否受到支持,如果是,你会如何表达出来?

required是一个关键字,只对对象实例有意义,对数组没有意义。

表示数组必须至少有 2 项的方法是通过 minItems 关键字在 Draft3 and Draft4.

如果您只需要为数组中的第一项和第二项表达任何其他模式,您可以通过在 items 数组中包含两个模式来实现。例如,以下架构要求属性 "0""1" 包含在数组的第一项和第二项中。

对于草稿 3:

"items" : [{
        "properties" : {
            "0" : {"required" : true},
            "1" : {"required" : true}
        }
    }, {
        "properties" : {
            "0" : {"required" : true},
            "1" : {"required" : true}
        }
    }
]

草稿 4:

"items" : [{
        "required" : ["0", "1"]
    }, {
        "required" : ["0", "1"]
    }
]