【问题标题】:How to enforce restrictions in Json Schema如何在 Json Schema 中实施限制
【发布时间】:2016-02-27 12:32:08
【问题描述】:
我们正在使用 JsonSchema 来记录我们的 Rest API,我需要确保每个字符串、数字、数组都对其应用的最大大小有限制,即
- 所有字符串都有一个 maxLength 和模式集
- 所有整数/数字都有一个最大集合
- 所有数组都有一个 maxItems 集
这将允许我们对从 JsonSchema 生成的 POJO 运行 javax 验证(我们使用带有 JSR303 注释的 jsonschema2pojo)。
我宁愿不手动查看每个经过我的模式,所以想知道是否有任何自动化工具来检查这些项目的每个元素?如果不是,我可能会写一个:-)
非常感谢
【问题讨论】:
标签:
jsonschema
json-schema-validator
jsonschema2pojo
【解决方案1】:
您可以构建自己的元模式,就像可以根据draft-04 meta-schema 验证任何有效的 JSON 模式一样。
以您的示例为例,您可以将以下约束添加到一般有效的 JSON 模式中:
{
"oneOf" : [{
"type" : "string",
"required" : ["pattern", "maxLength"]
}, {
"type" : "array",
"required" : ["maxItems"]
}, {
"type" : {
"enum" : ["number", "integer"]
},
"required" : ["maximum"]
}, {
"type" : {
"enum" : ["object", "boolean", "null"]
}
}
]
}
在您自己的元验证之后,您可以安全地生成 java 类。