杰克逊·米金(Jackson Mixin)在使用@JsonUnwrapped时忽略属性,但仅在某些情况下

时间:2018-11-16 17:45:37

标签: jackson jackson2

与Jackson一起,我正在使用Mixin接口进行序列化。

假设我有一个由多个类使用的通用类,这里是该类的Mixin:

@JsonPropertyOrder({"id", "name"})
interface SharedMixin {
    String getId();

    String getName();
}

多个Mixin使用@JsonUnwrapped批注来使用Mixin,如下所示:

@JsonPropertyOrder({"code", "sharedMixin"})
public interface AnotherMixin {
  String getCode();

  @JsonUnwrapped
  SharedMixin getSharedMixin();
}

这很好,它从SharedMixin接口解开了所有属性。但是在特定情况下,当我在父Mixin中展开时,我想忽略SharedMixin的一个属性,假设我想忽略名称字段。 我尝试了以下方法,但没有成功。

@JsonPropertyOrder({"otherField", "sharedMixin"})
public interface AnotherMixin2 {
  String otherField();

  @JsonUnwrapped
  SharedMixin getSharedMixin();

  @JsonIgnore()
  String getName();
}

我也尝试过使用“ @JsonIgnoreProperties({” name“})”“,但是它都没有作用,看起来属性在序列化时仍然存在,但是值为空。

请注意,我不能在SharedMixin内使用@JsonIgnore(),因为它将忽略所有使用它的类中的该字段,并且它们是多个。

1 个答案:

答案 0 :(得分:0)

看起来这是杰克逊(Jackson)库中的错误,@ JsonUnwrapped和@JsonIgnoreProperties不能很好地协同工作。

https://github.com/FasterXML/jackson-dataformats-text/issues/77