首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在JSON模式中使用oneOf来验证POST和修补程序请求?

如何在JSON模式中使用oneOf来验证POST和修补程序请求?
EN

Stack Overflow用户
提问于 2016-08-03 08:16:54
回答 1查看 1.1K关注 0票数 3

目前,我们正在使用一个包含oneOf的模式文件,其中包含两个模式:一个用于修补程序请求,一个用于POST请求。在Java代码中,我们检查请求中是否有id可用,然后检查oneOf部分中的第一个模式是否有错误消息。

就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
        processingReport.iterator().forEachRemaining(processingMessage -> {
        JsonNode json = processingMessage.asJson();

        JSONObject reports = new JSONObject(json.get("reports").toString());
        logger.debug("Schema validation: {}", reports.toString());
        //Seems always has 2 reports.
        String reportIdentifier = isCreate ? "/properties/data/oneOf/0" : "/properties/data/oneOf/1";
        JSONArray errorsArray = new JSONArray(reports.get(reportIdentifier).toString());

        //Do something with the error here

    });

但这对我来说似乎不对。是否有任何方法来管理模式本身,所以当id可用时,它会从oneOf中选择正确的模式,或者有更好的方法来做到这一点?

我知道有一种选择是有不同的json文件,但是我们的技术经理宁愿把它们保留在1位。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-04 07:38:09

oneOfanyOf子句可用于建模条件约束。以下模式将根据id属性的存在对修补程序或后模式进行验证:

代码语言:javascript
代码运行次数:0
运行
复制
{
    "oneOf" : [{
            "$ref" : "/post_request_schema#"
        }, {
            "allOf" : [{
                    "$ref" : "/patch_request_schema#"
                }, {
                    "required" : ["id"]
                }
            ]
        }
    ]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38738116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档