使用 Jackson 将 json 映射到 java 对象时聚合所有错误

wit*_*eta 5 java json jackson

我正在尝试使用 Jackson ObjectMapper 将 JSON 字符串映射到 Java 对象。如果存在映射错误,Jackson 在第一次遇到错误时会抛出异常。有没有办法让ObjectMapper在收集错误的同时映射所有字段,并将所有可能的错误一起返回?

Java 类

public class Test {
    public int field1;
    public int field2;
    public Test() {}
}
Run Code Online (Sandbox Code Playgroud)

映射器代码片段

String json = "{\"field1\":field, \"field2\":anotherField}";
Test test = new ObjectMapper().readValue(json, Test.class);
Run Code Online (Sandbox Code Playgroud)

上面的代码在尝试将 'field' 解析为 int 时失败,并且不检查剩余字段。但是代码中,field1和field2都无法解析。有没有办法一次性获取所有潜在错误,这样我就不必一次修复 1 个错误?

Ale*_*exR 1

嗯,恕我直言,这个问题没有一个简单的解决方案。然而,可以找到特定的解决方案。

如果你想忽略缺失的字段,只需使用注释

@JsonIgnoreProperties(ignoreUnknown = true)
Run Code Online (Sandbox Code Playgroud)

支持不可解析的数据更为复杂。请查看此讨论中的正确答案,在此处输入链接描述

但是,如果您的 JSON 在语法上错误,例如缺少逗号或冒号,则这将无济于事。