我正在尝试使用Retrofit和Jackson来反序列化一个API。我得到的onFailure错误没有创造者,像默认构造,存在):不能从对象值反序列化(没有委托或基于属性的创造者。
当前回答
只是想指出这个答案提供了一个更好的解释。 基本上你可以同时使用@Getter和@NoArgConstructor 或者让Lombok使用Lombok再生@ConstructorProperties。配置文件, 或者用-parameters标记编译Java项目, 或者让杰克逊使用龙目岛的@Builder
其他回答
在下面的用例中遇到相同的错误。
我尝试使用sprint引导(2.0.0快照版本)在各自的bean中没有默认构造函数的情况下达到Rest(Put映射)端点。
但是在最新的Spring Boot版本(2.4.1版本)中,同一段代码可以正常运行。
因此在最新版本的Spring Boot中不再需要bean默认构造函数
我在Kotlin中也遇到了例外。如果在应用KotlinModule之后仍然有问题,您可能(尽管不太可能)在某个地方有值类。
正如错误所提到的,该类没有默认构造函数。
将@NoArgsConstructor添加到实体类中应该可以解决这个问题。
我有这个问题,我修复了下面的代码。
@Configuration
open class JacksonMapper {
@Bean
open fun mapper(): ObjectMapper {
val mapper = ObjectMapper()
...
mapper.registerModule(KotlinModule())
return mapper
}
}
只是想指出这个答案提供了一个更好的解释。 基本上你可以同时使用@Getter和@NoArgConstructor 或者让Lombok使用Lombok再生@ConstructorProperties。配置文件, 或者用-parameters标记编译Java项目, 或者让杰克逊使用龙目岛的@Builder
推荐文章
- 在android中从上下文获取活动
- 如何在JSON中使用杰克逊更改字段名
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 如何将字符串转换为长在Kotlin?
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)