java - Lombok 和 jackson - 冲突/不明确的属性名称定义

标签 java jackson lombok

我收到警告消息:

com.fasterxml.jackson.databind.JsonMappingException: Conflicting/ambiguous property name definitions (implicit name 'balance'): found multiple explicit names: [{}Balance, Balance], but also implicit accessor: [method ResponseVO#getBalance(0 params)][visible=true,ignore=false,explicitName=false] 

我有最新的 lombok 1.18.10 和 fasterxml.jackson-version 2.7.5

我找到了 similar issue但它应该在 2.7.4 中修复(关闭)

Jackson 2.7.1 and Lombok: 'Conflicting/ambiguous property name definitions' #1122

I think this can be changed for 2.7.4 after all, can fix this.

代码:

@Data
@AllArgsConstructor(access = AccessLevel.PUBLIC)
@NoArgsConstructor
public class ResponseVO implements Serializable {

    private static final long serialVersionUID = 1;
    @JacksonXmlProperty(localName = "Balance")
    @JsonProperty("Balance")
    @JacksonXmlElementWrapper(useWrapping = false)
    List<BalanceResponseVO> balance;

是相关的警告吗?我该如何修复/删除此警告?

似乎新的 Lombok 版本也将 @JsonProperty("Balance") 添加到生成的 setter 中并造成了这种困惑

编辑

当我删除在我的情况下实际上不需要的 @JsonProperty("Balance") 时问题已解决

最佳答案

我们升级了 Lombok 版本,它现在添加了 @JsonProperty("Balance") 也生成了 setter

这个重复的 @JsonProperty 在日志中创建了一个 WARN,并且也未能创建响应(无一异常(exception))

我删除了 @JsonProperty("Balance") 这在我的案例中实际上是多余的/不需要的并且它有效

  • 请注意更改为 private 并没有解决问题

Lombok change :

FEATURE: Lombok now knows exactly how to treat @com.fasterxml.jackson.annotation.JsonProperty and will copy it to the right places for example when making builders. Issue #1961 Issue #1981

关于java - Lombok 和 jackson - 冲突/不明确的属性名称定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689035/

相关文章:

java - 递归映射时的 MapStruct 问题

java - 使用 Jackson 反序列化非字符串映射键

java - 尝试删除第一列中的重复项而不删除行。并且行值应转换为原始值。使用java

java - 我的椭圆创建程序仅创建直线

java - Spring MVC 可以反序列化 JSON(可以是对象或数组)吗?

java - XmlMapper 在解析 LinkedHashMap 时缺少根

java - 持久化父实体后,HashSet.contains() 从 true 变为 false

java - 在 Java 中使用注释使所有参数成为最终参数

java - Spring 框架是否因 Jackson 依赖而容易受到攻击

java - 在复制构造函数中使用直接字段访问而不是 getter 会导致空指针异常