【问题标题】: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 类。

    【讨论】:

    • 非常感谢,真的很有用,抱歉回复晚了。
    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 2021-12-05
    • 1970-01-01
    • 2016-10-24
    • 2017-04-12
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多