首页 > 解决方案 > 以 set 开头的字段名称的 setter 定义冲突

问题描述

我们有一个从 yml 生成的 pojo,它在 getter 上定义了 @JsonProperty。这是基于 openapi 的 maven 插件。对于一个这样的 yml,我们有一个字段结算类型。我们无法更改名称,因为这是要在 rest api 调用中发送给供应商的字段。当使用杰克逊的 ObjectMapper 反序列化对象时,我们得到以下错误 -

属性“settlementType”的设置器定义冲突:settlementType(1 param) 与 setSettlementType(1 param)。

我尝试了一个 mixin 课程。

public class SettlementTypeMixin {
@JsonProperty("settlementType"
String settlementType;

@JsonIgnore
public void setSettlementType(String settlementType) {
   this.settlementType = settelementType;
}
}

我使用 addMixinAnnotations 方法将 mixin 添加到映射器中。但我没有看到行为有任何变化。

我还尝试设置 fieldVisibility、getterVisibility、setterVisibility 和 CreatorVisibilities。yml 还需要其他类型,最后我必须启用下面提到的所有类型的可见性。

我无法使用杰克逊获取对象映射。请让我知道是否有解决办法。

标签: javajacksonobjectmapperjackson-databind

解决方案


推荐阅读