我正在尝试使用Retrofit和Jackson来反序列化一个API。我得到的onFailure错误没有创造者,像默认构造,存在):不能从对象值反序列化(没有委托或基于属性的创造者。
当前回答
我得到了同样的错误,在我添加了一个没有参数的构造函数后,问题就解决了。
其他回答
如果您正在使用LOMBOK。 创建文件lombok。如果没有,请配置并添加这一行。
lombok.anyconstructor.addconstructorproperties=true
我用龙目岛。我得到的错误,因为我没有把@NoArgsConstructor在我的模型类。
Bek的答案是正确的。
但如果有人试图在restcontroller中使用不可变类,即他们正在使用lombok的@value,那么你需要添加lombok. anyconstructor . addconstructorproperties =true
您可以创建一个名为lombok的文件。在根文件pom.xml所在的相同位置进行配置,并将这一行添加到文件中
https://stackoverflow.com/a/56022839/6700081
在下面的用例中遇到相同的错误。
我尝试使用sprint引导(2.0.0快照版本)在各自的bean中没有默认构造函数的情况下达到Rest(Put映射)端点。
但是在最新的Spring Boot版本(2.4.1版本)中,同一段代码可以正常运行。
因此在最新版本的Spring Boot中不再需要bean默认构造函数
我知道这是一个老帖子,但对于任何使用Retrofit的人来说,这可能是非常有用的。
如果你正在使用Retrofit + Jackson + Kotlin + Data类,你需要:
添加实现组:com.fasterxml.jackson。,名称:' Jackson -module-kotlin',版本:'2.7.1-2'到你的依赖,这样Jackson可以反序列化到数据类 当构建翻新时,传递Kotlin Jackson Mapper,以便翻新使用正确的映射器,例如:
val jsonMapper = com.fasterxml.jackson.module.kotlin.jacksonObjectMapper()
val retrofit = Retrofit.Builder()
...
.addConverterFactory(JacksonConverterFactory.create(jsonMapper))
.build()
注意:如果没有使用Retrofit, @Jayson Minard有一个更一般的方法回答。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- Kotlin中惯用的登录方式
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 将JsonNode转换为POJO
- 杰克逊克服下划线,支持骆驼案