与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(),因为它将忽略所有使用它的类中的该字段,并且它们是多个。
答案 0 :(得分:0)
看起来这是杰克逊(Jackson)库中的错误,@ JsonUnwrapped和@JsonIgnoreProperties不能很好地协同工作。
https://github.com/FasterXML/jackson-dataformats-text/issues/77