Endlich ein JSON-Mapper in JavaEE!
Ein kurzer Blick auf JSON-B
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.
Objekte lassen sich damit einfach in JSON und zurück wandeln:
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 @ApplicationScoped
an.
Konfiguration
Wem das Standard-Format nicht gefällt, der kann es einfach per Config im Code anpassen:
Noch mehr lässt sich in den Klassen selbst per Annotations konfigurieren:
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.