【问题标题】:Lombok and jackson - Conflicting/ambiguous property name definitionsLombok 和 jackson - 冲突/不明确的属性名称定义
【发布时间】:2019-11-04 07:41:31
【问题描述】:

我收到一条警告消息:

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 和 fastxml.jackson-version 2.7.5

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

Jackson 2.7.1 和 Lombok:“冲突/不明确的属性名称定义”#1122

我认为这毕竟可以为 2.7.4 更改,可以解决这个问题。

代码:

@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") 时问题已解决,这在我的情况下实际上是不需要的

【问题讨论】:

  • 创建字段private时警告会消失吗?
  • @JanRieke 当我删除@JsonProperty("Balance")时已修复@
  • @user7294900 恕我直言,您应该在编辑后做出正确的回答。
  • @JanRieke private 没有修复它
  • @UserWhoMarkAsUnreproducable,在新的 lombok 1.18.10 中添加 @JsonProperty 时,这是可重现的真实问题

标签: java jackson lombok


【解决方案1】:

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

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

我删除了@JsonProperty("Balance"),这在我的情况下实际上是多余/不需要的,它可以工作

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

Lombok change:

特点:Lombok 现在确切知道如何处理 @com.fasterxml.jackson.annotation.JsonProperty 并将其复制到正确的位置,例如在制作构建器时。第 1961 期 第 1981 期

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2015-07-19
    • 2014-04-25
    • 2015-08-07
    • 2019-05-18
    • 2018-12-18
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多