从 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"]
}
]
我的情况有点奇怪。我是 运行 一个 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"]
}
]