java - Jackson 转换器应抛出什么异常类型以指示无效值
问题描述
通过以下注释,我可以告诉 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
的,如果某些东西无法转换,则抛出 any是正确的做法。然后这个异常会JsonMappingException
被 Jackson 包装在 a 中,因此结果行为与其他解析错误相同。
推荐阅读
- c++ - 如何在 Qt QML (QtQuick 2) 中设置 Material Dark Theme?
- npm - npm 需要大量时间来运行命令
- python - 用熊猫把傻瓜排成一排
- java - 如何从 @Provides 方法中获取单例?
- c# - 如何将派生类和基类对象组合成派生类对象
- oracle - 复制一个dmp到同一个数据库
- javascript - 反应:useEffect 后输入不再起作用
- firebase - 先写错误。身份验证中有一个帐户,但firestore中没有用户数据
- javascript - 使用 javascript 预处理 Zabbix 提取 json
- mysql - 如何在调用下一个代码之前等待循环完成