如何在 Json 模式中实施限制
How to enforce restrictions in Json Schema
我们正在使用 JsonSchema 来记录我们的 Rest API,我需要确保每个字符串、数字、数组都对其应用的最大大小有限制,即
- 所有字符串都有最大长度和模式集
- 全部integers/numbers有一个最大集合
- 所有数组都设置了 maxItems
这将使我们能够 运行 对从 JsonSchema 生成的 POJO 进行 javax 验证(我们使用带有 JSR303 注释的 jsonschema2pojo)。
我不想手动观察通过我的方式的每个模式,所以想知道是否有任何自动化工具来检查这些项目的每个元素?如果没有,我可能会写一个 :-)
非常感谢
您可以构建自己的元模式,就像可以针对 draft-04 meta-schema.
验证任何有效的 JSON-模式一样
以您的样本为例,您将向一般有效的 JSON-schemas 添加以下约束:
{
"oneOf" : [{
"type" : "string",
"required" : ["pattern", "maxLength"]
}, {
"type" : "array",
"required" : ["maxItems"]
}, {
"type" : {
"enum" : ["number", "integer"]
},
"required" : ["maximum"]
}, {
"type" : {
"enum" : ["object", "boolean", "null"]
}
}
]
}
在您自己的元验证之后,您可以安全地生成 java 类。
我们正在使用 JsonSchema 来记录我们的 Rest API,我需要确保每个字符串、数字、数组都对其应用的最大大小有限制,即
- 所有字符串都有最大长度和模式集
- 全部integers/numbers有一个最大集合
- 所有数组都设置了 maxItems
这将使我们能够 运行 对从 JsonSchema 生成的 POJO 进行 javax 验证(我们使用带有 JSR303 注释的 jsonschema2pojo)。
我不想手动观察通过我的方式的每个模式,所以想知道是否有任何自动化工具来检查这些项目的每个元素?如果没有,我可能会写一个 :-)
非常感谢
您可以构建自己的元模式,就像可以针对 draft-04 meta-schema.
验证任何有效的 JSON-模式一样以您的样本为例,您将向一般有效的 JSON-schemas 添加以下约束:
{
"oneOf" : [{
"type" : "string",
"required" : ["pattern", "maxLength"]
}, {
"type" : "array",
"required" : ["maxItems"]
}, {
"type" : {
"enum" : ["number", "integer"]
},
"required" : ["maximum"]
}, {
"type" : {
"enum" : ["object", "boolean", "null"]
}
}
]
}
在您自己的元验证之后,您可以安全地生成 java 类。