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

标签 java json jackson jackson-databind

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

相关文章:

java - 这种类型的Object意味着什么?

java - 安装 JOGL (Eclipse) 时出现问题

java - 在java中按多个字段过滤的最佳方法是什么

java - TabHost 无法将自定义标题与其他标题功能结合起来

json - 无法使用 Alamofire Swift 获取 Json 数据

java - 是否可以用 Gson 扁平化 JSON 层次结构?

python - Sqlite3 Db 转 Json,用于 Highcharts?

android - 找不到类 'org.codehaus.jackson.map.ObjectMapper'?

java - 将 Body 中的 Json 映射到 Model 问题 Spring boot

java - Jackson 中的 JSON 属性文件不区分大小写