com.fasterxml.jackson.databind.exc.invaliddefinitionexception:使用lombok时找不到类的序列化程序

h4cxqtbf  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(236)

使用时出现奇怪的问题 @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 !
我错过什么了吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题