【问题标题】:What exception type shall a Jackson Converter throw to indicate an invalid valueJackson 转换器应抛出什么异常类型以指示无效值
【发布时间】:2019-06-07 13:17:35
【问题描述】:

通过以下注释,我可以告诉 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);
    }
}

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

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

【问题讨论】:

    标签: java json jackson jackson-databind


    【解决方案1】:

    (答案很简单,但由于我在互联网上找不到有关此问题的任何内容,所以我想我还是分享一下。)

    是的,如果某些内容无法转换,则抛出任何 RuntimeException 是正确的做法。然后这个异常会被 Jackson 封装在 JsonMappingException 中,因此产生的行为与其他解析错误相同。

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多