POJO-, Record- und Jackson-Ausgabemodi
Plain Old Java Objects (POJOs) sind das kompatibleste Ausgabeformat: private Felder mit öffentlichen Gettern und Settern, ein No-Arg-Konstruktor und ein Allargs-Konstruktor. Dieses Muster wird von jeder Java-Serialisierungsbibliothek verstanden — Jackson, Gson, Moshi — und von jedem Java-Framework.
Java 16+ Records erzeugen kompakteren Code für unveränderliche Datenträger. Eine Record-Deklaration generiert automatisch den Konstruktor, Getter (nach dem Komponent benannt, ohne "get"-Präfix), equals(), hashCode() und toString(). Records sind ideal für DTO- und Value-Object-Anwendungsfälle mit gewünschter Unveränderlichkeit.
Der Jackson-Annotationsmodus fügt @JsonProperty("originalKey") zu jedem Feld hinzu, damit Java-camelCase-Feldnamen auf JSON-Schlüssel in beliebigem Stil gemappt werden können. @JsonIgnoreProperties(ignoreUnknown = true) wird auf jede Klasse gesetzt um Deserialisierungsfehler zu verhindern wenn die API neue Felder hinzufügt. Die Ausgabe ist direkt mit Spring Boot's @RequestBody und RestTemplate nutzbar.
Typ-Mapping und Namenskonventionen
JSON-Zeichenketten werden zu String, Ganzzahlen zu int (oder Integer für nullable), Dezimalzahlen zu double (oder Double), Booleans zu boolean (oder Boolean), null-only-Felder zu Object mit Kommentar. Arrays werden zu List<T> mit dem abgeleiteten Element-Klassen-Typ. Verschachtelte Objekte generieren separate PascalCase-Klassen nach ihrem Schlüssel.
JSON-Schlüssel werden automatisch in gültige Java-Bezeichner umgewandelt: Bindestriche und Leerzeichen werden entfernt, das folgende Zeichen wird großgeschrieben (camelCase). Schlüssel die mit Ziffern beginnen erhalten einen Unterstrich-Präfix. Reservierte Java-Wörter werden mit einem Unterstrich-Suffix escaped.
Die Package-Deklaration oben in jeder Datei lautet standardmäßig "com.example.model" ist aber anpassbar. Imports für java.util.List und Jackson-Annotationen werden nach Bedarf automatisch hinzugefügt.
Spring Boot und Enterprise-Integration
Spring Boot-Anwendungen die REST-APIs konsumieren benötigen typisierte Anfrage- und Antwortklassen. Fügen Sie den JSON-Vertrag aus der API-Dokumentation ein, generieren Sie Jackson-annotierte POJOs und binden Sie sie in Ihre Service-Schicht ein.
Lombok-Annotationen (@Data, @NoArgsConstructor, @AllArgsConstructor, @Builder) können der POJO-Ausgabe hinzugefügt werden um den Getter/Setter-Boilerplate zu eliminieren. Mit Lombok schrumpft das generierte POJO auf bloße Felddeklarationen und Klassenebenen-Annotationen.
Bei der JPA- oder Hibernate-Integration dienen die generierten POJOs als Ausgangspunkt für Entity-Klassen. Das Hinzufügen von @Entity, @Id und @Column über die generierte Ausgabe liefert einen ersten Entwurf einer JPA-Entity aus Ihrem JSON-Datenmodell.