通过以下注释,我可以告诉 Jackson 使用 Converter
类对反序列化数据进行额外的后处理:
@JsonDeserialize(converter = MyConverter.class)
public MyConstrainedMap property;
例如,以下转换器会将 map 转换为自定义类型 MyConstrainedMap
:
public static class MyConverter extends StdConverter<Map<String, Object>, MyConstrainedMap> {
@Override
public MyConstrainedMap convert(Map<String, Object> rawMap) {
// ... check values
return new MyConstrainedMap(rawMap);
}
}
我的问题是:如果无法转换怎么办?抛出 jackson 的异常(exception)之一是有意义的,例如JsonMappingException
,但该异常已被检查,并且 convert
不允许任何已检查的异常。
那我该怎么办呢?抛出RuntimeException
?
最佳答案
(答案非常简单,但由于我在互联网上找不到有关此问题的任何内容,所以我想无论如何我都会分享它。)
是,如果某些内容无法转换,则抛出任何 RuntimeException
是正确的做法。然后,Jackson 将将此异常包装在 JsonMappingException
中,因此生成的行为与其他解析错误相同。
关于java - Jackson Converter 应抛出什么异常类型来指示无效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495130/