Jackson および JAXB アノテーション付きオブジェクトを使用したリソースの JSON 表現の実装

Java™ Architecture for XML Binding (JAXB) アノテーション付きオブジェクトと Jackson を使用すると、JavaScript Object Notation (JSON) 要求と応答を処理できます。 Jackson は、WebSphere® Application Server におけるデフォルトの JSON プロセッサーです。 Jackson はデフォルトで JAX-RS ランタイム環境に含まれているので、構成は不要です。

このタスクについて

このタスクでは、JAXB アノテーション付きオブジェクトと Jackson を使用して JSON 要求と応答を処理する方法を取り上げます。

手順

  1. リソース・メソッドを作成します。 リソース・メソッドが JSON コンテンツを戻すようにするには、JAXB クラスのインスタンスを直接戻すか、JAXB オブジェクトを応答エンティティーとして含む javax.ws.rs.core.Response オブジェクトを戻します。 また、@Produces("application/json") アノテーションを追加するか、応答オブジェクトの Content-Type ヘッダーを "application/json" に設定する必要があります。 以下の例では、BookList JAXB クラスの単純な JSON リターン・メソッドを示しています。
    @GET
    @Produces("application/json")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    または
    @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. XML オブジェクトと JSON オブジェクトの両方を戻す場合、同じメソッドに最小限の変更を加えて再利用できます。 @Produces アノテーションで、"application/xml""application/json""text/xml" を指定しなければなりません。 以下の例では、BookList クラスの BookList JAXB オブジェクトを戻す単純な JSON リターン・メソッドを示しています。
    @GET
    @Produces("application/json", "application/xml", "text/xml")
    public BookList getBookList() {
        BookList list = /* get a book list */
        return list;
    }
    以下の例では、BookList JAXB クラスの javax.ws.rs.core.Response オブジェクトを戻す単純な JSON リターン・メソッドを示しています。
    @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();
    }
    クライアント要求の Accept HTTP ヘッダーによるコンテンツ・ネゴシエーションは、リソース・メソッドによって JSON 表現または XML 表現のどちらが戻されるかを判別するのに役立ちます。 詳しくは、コンテンツ・ネゴシエーションに関する資料を参照してください。 JAXB アノテーション付きオブジェクトを再利用すると、同じコードを JSON と XML の両方に使用できるので、開発時間を短縮できます。 出力で特定の JSON フォーマットや XML フォーマットが必要ではない場合には、同一のモデル・コードを再利用すると役立つ場合があります。

    特定の XML および JSON の出力が必要で、同じ JAXB アノテーション付きクラスを再利用できない場合には、2 つの異なるリソース・メソッドを使用するしか問題を解決する方法はありません。 JSON リソース・メソッドでは @Produces("application/json") アノテーションを付ける必要があり、XML リソース・メソッドでは @Produces("application/xml", "text/xml") アノテーションを付けなければなりません。

タスクの結果

Jackson JSON プロセッサーを使用して、JAXB アノテーション付きクラスが含まれる JSON 表現が戻りました。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_jsoncontent_jaxb_annotated_objs
ファイル名:twbs_jaxrs_jsoncontent_jaxb_annotated_objs.html