Endlich ein JSON-Mapper in JavaEE!

Ein kurzer Blick auf JSON-B

Gregor Tudan
Cofinpro
2 min readNov 20, 2018

--

Ein in früheren Versionen von Java-EE schmerzlich vermisstes Feature war eine Mapping-API für JSON, ähnlich wie JAXB für XML. Die neue API in JavaEE 8 hierfür heißt „JSON-B“.

Der Einstieg

Wer bereits JavaEE 8 verwendet, braucht in den Dependencies erwartungsgemäß: nix! Doch auch ältere Versionen (oder sogar Java SE) können problemlos die neue API verwenden: hierfür benötigt ihr die API und eine passende Implementierung, wie zum Beispiel yasson.

Dependencies in Gradle

Objekte lassen sich damit einfach in JSON und zurück wandeln:

Marshalling von Objekten in JSON und zurück

Die Spec schlägt vor, die erstellten Objekte aus javax.json.bind wie Jsonb aufzuheben, da sie thread-safe sind, und problemlos wiederverwendet werden können. Für typische Projekte sollte eine Instanz von Jsonb für die gesamte Anwendung ausreichen. Hierfür bietet sich z.B. ein statisches Feld, oder ein CDI-Producer mit @ApplicationScopedan.

Konfiguration

Wem das Standard-Format nicht gefällt, der kann es einfach per Config im Code anpassen:

Konfiguration von JSON-B

Noch mehr lässt sich in den Klassen selbst per Annotations konfigurieren:

Customizing mit Annotations

Fazit

Mit JSON-B geht erstmal nichts, was nicht vorher schon mit anderen Frameworks wie Jackson ging — aber die API ist gut durchdacht und umgesetzt, so wie man es sich von einer modernen Java-API erwarten würde: wenig Boiler-Plate-Code, Config per Builder-Pattern, Alles ist immutable und thread-safe. Zudem erspart man sich wieder ein paar Abhängigkeiten zu 3rd-Party-Libs. Insgesamt ist JSON-B eine späte, aber sehr schöne Ergänzung zu JavaEE.

--

--