通过以下注释,我可以告诉Jackson使用Converter
类对反序列化的数据进行其他后期处理:
@JsonDeserialize(converter = MyConverter.class)
public MyConstrainedMap property;
例如,以下转换器会将地图转换为自定义类型
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的例外之一是有道理的,例如
JsonMappingException
,但已检查该异常,并且convert
不允许任何检查的异常。所以我应该怎么做。抛出
RuntimeException
? 最佳答案
(答案很简单,但是由于我在互联网上找不到任何关于此问题的信息,因此我认为我还是会分享它。)
是的,如果无法转换某些内容,则抛出RuntimeException
是正确的做法。然后,此异常将由Jackson包裹在JsonMappingException
中,因此所产生的行为与其他解析错误相同。