我正在尝试使用Retrofit和Jackson来反序列化一个API。我得到的onFailure错误没有创造者,像默认构造,存在):不能从对象值反序列化(没有委托或基于属性的创造者。
当前回答
我用龙目岛。我得到的错误,因为我没有把@NoArgsConstructor在我的模型类。
其他回答
如果您正在使用LOMBOK。 创建文件lombok。如果没有,请配置并添加这一行。
lombok.anyconstructor.addconstructorproperties=true
在类中添加构造函数 或 如果您正在使用pojo添加 @NoArgsConstructor @AllArgsConstructor
还要包括JsonProperty - @JsonProperty("name") private List<员工>姓名;
我用龙目岛。我得到的错误,因为我没有把@NoArgsConstructor在我的模型类。
在我的案例中,问题只发生在构建类型发布中,是由于包含存根的“\dto”文件夹中的一些类被模糊了。 为了解决这个问题,我在proguard-rules中添加了以下规则。支持文件:
-keep public class com.your.app_package.dto.** { *; }
-keep @**annotation** class * {*;}
#Preserve JacksonXml (PUBLIC_ONLY crash fix)
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
-keep class org.codehaus.** { *; }
-keepclassmembers public final enum com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility {
public static final com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility *; }
我可以在@JacksonProperty注释的帮助下在Kotlin中解决这个问题。上述情况的用法示例如下:
import com.fasterxml.jackson.annotation.JsonProperty
...
data class Station(
@JacksonProperty("repsol_id") val repsol_id: String,
@JacksonProperty("name") val name: String,
...
推荐文章
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 如何在JSON中使用杰克逊更改字段名
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 如何将字符串转换为长在Kotlin?
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?