使用时出现奇怪的问题 @Data
以及 @NoArgsConstructor
从Lombok湖项目的dto。看起来jackson无法序列化和反序列化带有lombok注解的类。
我对lombok不太熟悉,但是我希望库能够生成getter和setter,这样jackson就能够序列化和反序列化对象了。
简短示例:
GetAllCustomerResponse.java文件
@Data
@NoArgsConstructor
public class GetAllCustomersResponse {
@JsonValue
private List<GetAllCustomersResponseElement> customers = new ArrayList<>();
public void addElement(GetAllCustomersResponseElement element) {
this.customers.add(element);
}
}
GetAllCustomerResponseElement.java文件
@Data
@NoArgsConstructor
public class GetAllCustomersResponseElement {
private Integer id;
private String name;
private Date birthdate;
}
当请求到达以检索 GetAllCustomersResponse
(包含所有客户的列表),此异常在jackson的序列化过程中发生:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.example.dto.GetAllCustomersResponseElement and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.example.dto.GetAllCustomersResponse["customers"]->java.util.ArrayList[0])
如果我们要序列化的类中不存在getter和setter,则通常会发生“找不到类的序列化程序”的情况。
如果我写下所有的“样板”getter和setter,jackson就能正常工作。
但是,如果我用 @Data
从Lombok山来,为什么Jackson没有得分手和得分手呢?
来自lombok docs:
@数据
现在一起:一条捷径 @ToString
, @EqualsAndHashCode
, @Getter
在所有领域, @Setter
在所有非最终字段上,以及 @RequiredArgsConstructor
!
我错过什么了吗?
暂无答案!
目前还没有任何答案,快来回答吧!