通过以下注释,我可以告诉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中,因此所产生的行为与其他解析错误相同。

09-10 12:34