1

我们正在使用 JsonSchema 来记录我们的 Rest API,我需要确保每个字符串、数字、数组都对其应用的最大大小有限制,即

  • 所有字符串都有一个 maxLength 和模式集
  • 所有整数/数字都有一个最大集合
  • 所有数组都有一个 maxItems 集

这将允许我们对从 JsonSchema 生成的 POJO 运行 javax 验证(我们使用带有 JSR303 注释的 jsonschema2pojo)。

我宁愿不手动观察每个模式通过我的方式,所以想知道是否有任何自动化工具来检查这些项目的每个元素?如果不是,我可能会写一个:-)

非常感谢

4

1 回答 1

1

您可以构建自己的元模式,就像可以根据draft-04 元模式验证任何有效的 JSON 模式一样。

以您的示例为例,您可以将以下约束添加到一般有效的 JSON 模式中:

{
    "oneOf" : [{
            "type" : "string",
            "required" : ["pattern", "maxLength"]
        }, {
            "type" : "array",
            "required" : ["maxItems"]
        }, {
            "type" : {
                "enum" : ["number", "integer"]
            },
            "required" : ["maximum"]
        }, {
            "type" : {
                "enum" : ["object", "boolean", "null"]
            }
        }

    ]
}

在您自己的元验证之后,您可以安全地生成 java 类。

于 2015-12-09T16:04:52.140 回答