Jackson-Serialisierung: So ignorieren Sie übergeordnete Eigenschaften

Ich möchte eine POJO-Klasse serialisieren, die nicht von mir gesteuert wird, aber ich möchte vermeiden, dass Eigenschaften serialisiert werden, die von der Superklasse und nicht von der Endklasse stammen. Beispiel

public class MyGeneratedRecord extends org.jooq.impl.UpdatableRecordImpl<...>,
    example.generated.tables.interfaces.IMyGenerated {
  public void setField1(...);
  public Integer getField1();

  public void setField2(...);
  public Integer getField2();
...
}

Sie können anhand des Beispiels erraten, dass diese Klasse von JOOQ generiert wird und von einer komplexen Basisklasse UpdatableRecordImpl erbt, die auch einige Bean-eigenschaftsähnliche Methoden enthält, die Probleme bei der Serialisierung verursachen. Außerdem habe ich mehrere ähnliche Klassen, daher ist es ratsam, nicht die gleiche Lösung für alle meine generierten POJOs zu duplizieren.

Ich habe bisher die folgenden möglichen Lösungen gefunden:

ignore die spezifischen Felder, die von der Superklasse kommen, unter Verwendung der Mischtechnik wie folgt:Wie kann ich Jackson anweisen, eine Eigenschaft zu ignorieren, für die ich keine Kontrolle über den Quellcode habe?

Das Problem dabei ist, dass eine Änderung der Basisklasse (z. B. eine neue getAnything () -Methode) meine Implementierung beschädigen kann.

implementieren Sie einen benutzerdefinierten Serializer und behandeln Sie das Problem dort. Das kommt mir ein bisschen übertrieben vor.

wie übrigens habe ich eine Schnittstelle, die genau die Eigenschaften beschreibt, die ich serialisieren möchte, vielleicht kann ich eine Annotation von @JsonSerialize (as = IMyGenerated.class) einmischen ...? Kann ich das für meinen Zweck verwenden?

Aber aus rein gestalterischer Sicht ist es am besten, Jackson mitteilen zu können, dass ich nur die Eigenschaften der letzten Klasse serialisieren und alle geerbten Eigenschaften ignorieren möchte. Gibt es eine Möglichkeit, das zu tun?

Danke im Voraus

Antworten auf die Frage(6)

Ihre Antwort auf die Frage