没有默认构造函数的杰克逊第三方类

Dan*_*n W 28 java json jackson

我正在尝试使用Jackson来读取/写入我的POJO来自Json.截至目前,除了第三方课程外,我已经为我的课程配置并工作了.当试图读入Json我得到错误:

org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type
Run Code Online (Sandbox Code Playgroud)

经过一些快速的谷歌搜索后,似乎我的类需要一个默认的构造函数覆盖带注释的默认构造函数.不幸的是,失败的类来自第三方库,并且该类没有默认构造函数,我显然无法覆盖代码.

所以我的问题是,我能做些什么或者我运气不好吗?

谢谢.

Pro*_*uce 26

你可以利用Jackson的Mix-Ins功能,再加上Creator功能.Mix-Ins功能减少了对原始第三方代码进行注释的需要,而Creator功能为自定义实例创建提供了一种机制.

对于更多的自定义,编写自定义反序列化器并不太复杂.

  • 这些链接适用于Jackson 1.对于Jackson 2,您可以将混合直接添加到`objectMapper`,`objectMapper.addMixInAnnotations(target,mixinSource)`([source](https://github.com/FasterXML/)杰克逊文档/问题/ 2)) (3认同)
  • [Jackson的混音功能](https://github.com/FasterXML/jackson-docs/wiki/JacksonMixInAnnotations)更新了混音功能的链接.建议编辑队列已满,因此在这里添加. (3认同)