С Джексоном я использую интерфейсы Mixin для сериализации.
Предположим, у меня есть общий класс, используемый несколькими классами, здесь Mixin этого класса:
@JsonPropertyOrder({"id", "name"})
interface SharedMixin {
String getId();
String getName();
}
То, что Mixin являетсяиспользуется множеством Mixin с использованием аннотации @JsonUnwrapped, например:
@JsonPropertyOrder({"code", "sharedMixin"})
public interface AnotherMixin {
String getCode();
@JsonUnwrapped
SharedMixin getSharedMixin();
}
Это прекрасно работает, разворачивает все свойства из интерфейса SharedMixin.Но есть особый случай, когда я хочу игнорировать одно свойство SharedMixin при развертывании в родительском Mixin, предположим, что я хочу игнорировать поле имени.Я пробовал следующее, но безуспешно.
@JsonPropertyOrder({"otherField", "sharedMixin"})
public interface AnotherMixin2 {
String otherField();
@JsonUnwrapped
SharedMixin getSharedMixin();
@JsonIgnore()
String getName();
}
Я также пытался использовать "@JsonIgnoreProperties ({" name "})", но ни один из них не работал, похоже, что свойство все еще существует при сериализации, но с пустым значением.
Обратите внимание, что я не могу использовать @JsonIgnore () внутри SharedMixin, потому что он будет игнорировать поле во всех классах, которые его используют, и они кратны.