@Accessors( Fluent = true) 不适用于 Jakson

问题描述 投票:0回答:2

在带有 Lombok 的 Spring boot 应用程序中,我有 pojo 类

AccountDTO

@Data
@Builder
@Accessors(fluent = true)
public class AccountDTO  implements Serializable {
    private String identification;
}

我的项目编译得很好。然而,它在执行时抛出异常

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:否 找到类 AccountDTO 的序列化程序,并且没有发现要创建的属性 BeanSerializer

如果我删除了注释

@Accessors(fluent = true)
,那么它就可以正常工作,没有任何问题。

如何让

Lombok
@Accessors(fluent = true)
Jackson
一起工作?

java serialization jackson lombok
2个回答
18
投票

我最近在遇到同样的问题时偶然发现了这个问题,我的解决方案是使用以下方法在 Lombok 生成的 getter 上添加显式

@JsonProperty
注释:
@Getter(onMethod = @__(@JsonProperty))

在您的情况下,课程将如下所示:

@Data
@Builder
@Accessors(fluent = true)
@Getter(onMethod = @__(@JsonProperty))
public class AccountDTO  implements Serializable {
    private String identification;
}

0
投票

@Getter(onMethod_ = @JsonGetter)
@Getter(onMethod_ = @JsonProperty)

© www.soinside.com 2019 - 2024. All rights reserved.