java - 在杰克逊中使用没有自定义 JsonDeserializer 的原始值构造函数反序列化 json
问题描述
我有一个类,我想通过调用构造函数来反序列化,该构造函数使用一种接受完整 json 对象作为字符串的方法:
public class MyDataObject {
@IwantObjectMapperToCallThisWhenDeserializing
public MyDataObject(String json) {
// custom logic
}
}
是否可以仅使用简单的注释来实现,而不影响我自己的JsonDeserializer
?
解决方案
我没有找到直接的方法,但这里有一个解决方法:
public class MyDataObject {
@JsonCreator(mode = Mode.DELEGATING)
// passed object is a Map, but as long as the type is serializable below, it can by any type
public MyDataObject(Object map) {
String json;
try {
json = new ObjectMapper().writeValueAsString(map);
} catch (JsonProcessingException e) {
throw new RuntimeException("Error deserializing MyDataObject", e);
}
// custom logic
}
}
推荐阅读
- reactjs - 我设置了一个回调来触发循环反应,但我不明白为什么?
- c# - 必须是 Collison2D 类型,但我的代码与 Collison 无关
- javascript - 对自定义 react-select 样式对象的内联更新
- javascript - Google Apps 脚本返回 null
- python - 使用 Alamofire 连接到本地主机服务器(python)
- reactjs - 为什么我的 React 应用程序没有部署在 GitHub 上
- sql - 在 SQLite 中查询多个表时如何累积匹配?
- html - 图片VUE中“src”的动态变化
- php - 文件/媒体无法通过 Codeignitator 中的 URL 公开访问
- php - 为什么 authorize() 不能像在开发环境中那样在生产环境中工作?