我正在尝试使用Retrofit和Jackson来反序列化一个API。我得到的onFailure错误没有创造者,像默认构造,存在):不能从对象值反序列化(没有委托或基于属性的创造者。


当前回答

使用Lombok时要小心,尤其是@Builder。

解决这个问题的方法是:

   @JsonDeserialize(builder = X.XBuilder.class)
       class X{
          @JsonPOJOBuilder(withPrefix = "")
          public static class XBuilder{

          }
}

我希望它能让你的生活更轻松

其他回答

正如错误所提到的,该类没有默认构造函数。

将@NoArgsConstructor添加到实体类中应该可以解决这个问题。

我用龙目岛。我得到的错误,因为我没有把@NoArgsConstructor在我的模型类。

我的问题原因对我来说似乎很不寻常,不确定是否有人在相同的条件下得到错误,我通过不同之前的提交找到了原因,在这里:

通过我的构建。gradle我正在使用这2个编译器选项,并注释掉这一行固定的问题

//compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']

Bek的答案是正确的。

但如果有人试图在restcontroller中使用不可变类,即他们正在使用lombok的@value,那么你需要添加lombok. anyconstructor . addconstructorproperties =true

您可以创建一个名为lombok的文件。在根文件pom.xml所在的相同位置进行配置,并将这一行添加到文件中

https://stackoverflow.com/a/56022839/6700081

使用Lombok时要小心,尤其是@Builder。

解决这个问题的方法是:

   @JsonDeserialize(builder = X.XBuilder.class)
       class X{
          @JsonPOJOBuilder(withPrefix = "")
          public static class XBuilder{

          }
}

我希望它能让你的生活更轻松