Jackson Converter 应该抛出什么异常类型来指示无效值

What exception type shall a Jackson Converter throw to indicate an invalid value

通过以下注释,我可以告诉 Jackson 使用 Converter class 对反序列化数据进行额外的 post 处理:

@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);
    }
}

我的问题是:无法转换怎么办?抛出杰克逊的一个例外是有意义的,例如JsonMappingException,但该异常已被检查,并且 convert 不允许任何已检查的异常。

那我应该怎么做呢。扔一个RuntimeException?

(答案很简单,但是因为我在网上找不到关于这个问题的任何东西,所以我想我还是分享一下。)

,抛出任何RuntimeException是正确的做法,如果不能转换的话。 Jackson 会将此异常包装在 JsonMappingException 中,因此产生的行为与其他解析错误相同。