如何在 Json 模式中实施限制

How to enforce restrictions in Json Schema

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

这将使我们能够 运行 对从 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 类。