JSON-Darstellung einer Ressource mit annotierten Jackson- und JAXB-Objekten implementieren

Sie können JSON-Anforderungen und -Antworten (JavaScript Object Notation) mit annotierten JAXB-Objekten (Java™ Architecture for XML Binding) und Jackson verarbeiten. Jackson ist der Standard-JSON-Prozessor in WebSphere Application Server. Er ist standardmäßig in der JAX-RS-Laufzeitumgebung enthalten, deshalb ist es nicht erforderlich, Jackson zu konfigurieren.

Informationen zu diesem Vorgang

Diese Task umfasst Anweisungen für die Verarbeitung von JSON-Anforderungen und -Antworten mit annotierten JAXB-Objekten und Jackson.

Vorgehensweise

  1. Erstellen Sie eine Ressourcenmethode. Damit die Ressourcenmethode JSON-Inhalt zurückgibt, müssen Sie die Instanz einer JAXB-Klasse direkt zurückgeben oder ein Objekt vom Typ javax.ws.rs.core.Response mit einem JAXB-Objekt als Antwortentität zurückgeben. Außerdem müssen Sie eine Annotation vom Typ @Produces("application/json") zurückgeben oder den Content-Type-Header in Ihrem Response-Objekt auf "application/json" setzen. Das folgende Beispiel veranschaulicht einfache JSON-Rückgabemethoden für die JAXB-Klasse BookList:
    @GET
    @Produces("application/json")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    oder
    @GET
    @Produces("application/json")
    public javax.ws.rs.core.Response getBookList() {
        BookList list = /* get a book list */
        return Response.ok(list).type(MediaType.APPLICATION_JSON_TYPE).build();
    }
  2. Wenn Sie sowohl XML- als auch JSON-Objekte zurückgeben möchten, können Sie dieselbe Methode mit minimalen Änderungen wiederverwenden. Sie müssen "application/xml", "application/json" und "text/xml" in der Annotation @Produces angeben. Das folgende Beispiel veranschaulicht eine einfache JSON-Rückgabemethode, die ein Objekt vom Typ BookList für die JAXB-Klasse BookList zurückgibt:
    @GET
    @Produces("application/json", "application/xml", "text/xml")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    Das folgende Beispiel veranschaulicht eine einfache JSON-Rückgabemethode, die ein Objekt vom Typ javax.ws.rs.core.Response für die JAXB-Klasse BookList zurückgibt:
    @GET
    @Produces("application/json", "application/xml", "text/xml")
    public javax.ws.rs.core.Response getBookList() {
        BookList list = /* get a book list */
        return Response.ok(list).build();
    }
    Die Vereinbarung von Inhalten über den Accept-HTTP-Header der Clientanforderung hilft, zu bestimmen, ob von der Ressourcenmethode eine JSON- oder eine XML-Darstellung zurückgegeben wird. Weitere Informationen finden Sie im Artikel zur Vereinbarung von Inhalten. Durch die Wiederverwendung von annotierten JAXB-Objekten können Sie die Entwicklungszeit für die Bereitstellung von JSON und XML aus demselben Code verkürzen. Die Wiederverwendung eines Modells kann von Nutzen sein, wenn keine bestimmte formatierte JSON- oder XML-Ausgabe erforderlich ist.

    Wenn Sie eine bestimmte XML- und JSON-Ausgabe benötigen und nicht dieselben annotierten JAXB-Klassen wiederverwenden können, können Sie das Problem beispielsweise dadurch lösen, dass Sie zwei verschiedene Ressourcenmethoden verwenden. Die JSON-Ressourcenmethode muss mit einer Annotation vom Typ @Produces("application/json") und die XML-Ressourcenmethode mit einer Annotation vom Typ @Produces("application/xml", "text/xml") versehen werden.

Ergebnisse

Sie haben eine JSON-Darstellung mit annotierten JAXB-Klassen über den Jackson-JSON-Prozessor zurückgegeben.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_jsoncontent_jaxb_annotated_objs
Dateiname:twbs_jaxrs_jsoncontent_jaxb_annotated_objs.html