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

使用Jackson将json映射到java对象时聚合所有错误,java,json,jackson,Java,Json,Jackson,我正在尝试使用Jackson ObjectMapper将JSON字符串映射到Java对象。如果存在映射错误,Jackson会在第一次遇到错误时抛出异常。有没有办法让ObjectMapper在收集错误时映射所有字段,并一起返回所有可能的错误 Java类 public class Test { public int field1; public int field2; public Test() {} } 映射程序代码段 String json = "{\"field1\"

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

Java类

public class Test {
    public int field1;
    public int field2;
    public Test() {}
}
映射程序代码段

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

上面的代码在尝试将“field”解析为int时失败,并且不检查剩余字段。但是,在代码中,字段1和字段2都无法解析。有没有一种方法可以一次获得所有潜在错误,这样我就不必一次修复一个错误?

好吧,我认为这个问题没有一个简单的解决方案。 但是,可以找到特定的解决方案

如果要忽略缺少的字段,请使用注释

@JsonIgnoreProperties(ignoreUnknown = true)
支持不可解析的数据更为复杂。请看一下讨论中的正确答案


但是,如果您的JSON语法错误(例如,如果缺少coma或冒号),这将不会有帮助

您的问题只是为了处理int解析的问题,还是您想解决任何jackson解析的问题?@AlexR我想处理任何映射问题,包括解析和缺少的字段(即,如果json字符串有一个键'field3',它不映射到Java对象中的任何字段),我不想忽略缺少的字段。我不希望映射程序在第一次出错时失败。如果有多个缺少的字段,我希望错误显示所有缺少的字段,而不仅仅是第一个。因此,请使用类似于引用的解决方案来处理不可解析的类型。谢谢,但即使使用类似的策略,我也只能忽略错误并为值返回null。我可以考虑存储异常,但我希望保持映射程序线程的安全。