龙目岛未创建默认构造函数导致杰克逊数据绑定失败



我有一个POJO

@Data
@AllArgsConstrcutor
class Test {
T field1,
T field2,
}

当我尝试使用 jackson-databind 2.9.3 反序列化它时,它是

失败的com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 无法构造com.mypackage.Test的实例(没有创建者,例如 默认构造,存在(:无法从对象值反序列化(否( 基于委托或属性的创建者(在 [源:(字符串(

@AllArgsConstructor创建一个构造函数,其中包含类的每个字段的参数(因此,在您的情况下,您将获得Test(T, T)(。

对于默认构造函数,应添加@NoArgsConstructor注释:

@Data
@AllArgsConstrcutor // Won't be used by Jackson, but there's no harm in it, per-se
@NoArgsConstructor // Here!
class Test {
T field1;
T field2;
}

当然,Lombok不会生成默认构造函数。

with:@AllArgsConstrcutor你说你希望它生成一个包含所有提供的参数的构造函数。 由于 POJO 本身只需要一个构造函数,因此就是它。

如果要生成默认构造函数,请添加以下内容:@NoArgsConstructor

最新更新