2
目前我们使用的模式文件包含oneOf和2个模式:一个用于PATCH请求,一个用于POST请求。在Java代码中,我们检查请求中的id是否可用,然后检查oneOf节中是否有第一个模式的错误消息。如何在JSON模式中使用oneOf来验证POST和PATCH请求?
事情是这样的:
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文件,但我们的技术经理宁愿将它们放在一个地方。
您是不是要根据属性中包含的值选择模式?然后看看这个:http://stackoverflow.com/questions/18375506/how-to-use-dependencies-in-json-schema-draft-04/18384131#18384131 – jruizaranguren
@jruizaranguren从类型中选择模式,但我的情况是不同的。在我的情况下,类型是相同的。 (假设它总是公司),但是选择哪个模式取决于属性'id'是否可用。我想过'依赖关系',但是只有在y出现时才能说检查属性x。我们如何使用'依赖关系'来表示在id出现时选择这个模式?你能给我举个例子吗? JSON模式对我来说有点难理解 – xbmono