首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从json-schema验证器中的处理报告中提取所有消息?

如何从json-schema验证器中的处理报告中提取所有消息?
EN

Stack Overflow用户
提问于 2013-12-20 19:40:26
回答 3查看 6.7K关注 0票数 2

我使用json-schema验证器来验证json数据。如果发生任何错误,它将生成一个报告。但是我想向用户显示错误报告太大了,所以我只想显示错误消息。

这是我的报告

-报告

com.github.fge.jsonschema.report.ListProcessingReport:故障

-开始消息

错误:实例无法匹配4个模式中至少一个必需的模式

代码语言:javascript
复制
level: "error"
schema: {"loadingURI":"#","pointer":"/properties/question-groups/items"}
instance: {"pointer":"/question-groups/0"}
domain: "validation"
keyword: "anyOf"
nrSchemas: 4
reports: {"/properties/question-groups/items/anyOf/0":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/multiple-choice/properties/evaluation-key/properties/options/items"},"instance":{"pointer":"/question-groups/0/evaluation-key/options/0"},"domain":"validation","keyword":"allOf","message":"instance failed to match all required schemas (matched only 0 out of 1)","matched":0,"nrSchemas":1,"reports":{"/definitions/multiple-choice/properties/evaluation-key/properties/options/items/allOf/0":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/multiple-choice/properties/evaluation-key/properties/options/items/allOf/0/properties/score"},"instance":{"pointer":"/question-groups/0/evaluation-key/options/0/score"},"domain":"validation","keyword":"type","message":"instance type (string) does not match any allowed primitive type (allowed: [\"integer\"])","found":"string","expected":["integer"]}]}}],"/properties/question-groups/items/anyOf/1":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/text/properties/evaluation-key"},"instance":{"pointer":"/question-groups/0/evaluation-key"},"domain":"validation","keyword":"additionalProperties","message":"object instance has properties which are not allowed by the schema: [\"options\"]","unwanted":["options"]},{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/text/properties/evaluation-key"},"instance":{"pointer":"/question-groups/0/evaluation-key"},"domain":"validation","keyword":"required","message":"object has missing required properties ([\"scorers\"])","required":["scorers"],"missing":["scorers"]},{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/text/properties/type"},"instance":{"pointer":"/question-groups/0/type"},"domain":"validation","keyword":"enum","message":"instance value (\"multiple-choice\") not found in enum (possible values: [\"text\"])","value":"multiple-choice","enum":["text"]}],"/properties/question-groups/items/anyOf/2":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/numeric/properties/evaluation-key"},"instance":{"pointer":"/question-groups/0/evaluation-key"},"domain":"validation","keyword":"additionalProperties","message":"object instance has properties which are not allowed by the schema: [\"options\"]","unwanted":["options"]},{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/numeric/properties/evaluation-key"},"instance":{"pointer":"/question-groups/0/evaluation-key"},"domain":"validation","keyword":"required","message":"object has missing required properties ([\"scorers\"])","required":["scorers"],"missing":["scorers"]},{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/numeric/properties/type"},"instance":{"pointer":"/question-groups/0/type"},"domain":"validation","keyword":"enum","message":"instance value (\"multiple-choice\") not found in enum (possible values: [\"numeric\"])","value":"multiple-choice","enum":["numeric"]}],"/properties/question-groups/items/anyOf/3":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/table"},"instance":{"pointer":"/question-groups/0"},"domain":"validation","keyword":"anyOf","message":"instance failed to match at least one required schema among 2","nrSchemas":2,"reports":{"/definitions/table/anyOf/0":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/table/anyOf/0"},"instance":{"pointer":"/question-groups/0"},"domain":"validation","keyword":"required","message":"object has missing required properties ([\"cells\"])","required":["cells","evaluation-key","group-id","question-text","type"],"missing":["cells"]}],"/definitions/table/anyOf/1":[{"level":"error","schema":{"loadingURI":"#","pointer":"/definitions/table/anyOf/1"},"instance":{"pointer":"/question-groups/0"},"domain":"validation","keyword":"required","message":"object has missing required properties ([\"cells\",\"matching-unit\"])","required":["cells","evaluation-key","group-id","matching-unit","question-text","type"],"missing":["cells","matching-unit"]}]}}]}

-结束消息

我怎么才能只得到错误信息,任何建议都会有很大帮助。

谢谢

索姆

EN

回答 3

Stack Overflow用户

发布于 2014-03-12 22:09:38

您可以将报告作为JsonNode读取,并从中获取所需的任何参数。

代码语言:javascript
复制
ProcessingReport report;
ProcessingMessage message;

report = schema.validate(jsonData);
Iterator itr = report.iterator();

while(itr.hasNext())
{
    message = (ProcessingMessage) itr.next();
        System.out.println("Message" + message.asJson().get("message").asText());
 System.out.println("Reports" + message.asJson().get("reports").asText());

}
票数 2
EN

Stack Overflow用户

发布于 2020-07-31 01:12:21

在比较getLogLevel()和LogLevel.ERROR时,您应该遍历所有的消息并选择

代码语言:javascript
复制
Iterator<ProcessingMessage> itr = report.iterator();
while(itr.hasNext())
{
    ProcessingMessage message = (ProcessingMessage) itr.next();
    if(message.getLogLevel().equals(LogLevel.ERROR)){
        System.out.println(message.toString());
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-05-24 00:14:35

您可以使用以下方法

代码语言:javascript
复制
String getErrorsList(ProcessingReport report, boolean onlyErrors) {
    StringBuilder jsonValidationErrors = new StringBuilder();
    for (ProcessingMessage processingMessage : report) {
        if(onlyErrors && LogLevel.ERROR.equals(processingMessage.getLogLevel())) {
            jsonValidationErrors.append(processingMessage.getMessage()).append("\n\r");
        } else if(!onlyErrors) {
            jsonValidationErrors.append(processingMessage.getMessage()).append("\n\r");
        }
    }
    return jsonValidationErrors.toString();
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20702855

复制
相关文章

相似问题

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