Plain Old Java™ Object (POJO) を用いた Jackson の使用

RESTful サービスでは、Jackson ライブラリーを用いて JavaScript Object Notation (JSON) 形式でコンテンツの取り込みおよび作成を実行できます。

このタスクについて

POJO タイプ (配列タイプと java.util.Collection タイプを含む) は Jackson 対応エンティティー・タイプです。 Jackson ライブラリーは、本製品のランタイム環境に含まれています。 追加のライブラリー を組み込む必要はありません。

以下の Jackson アノテーションがサポートされていて、POJO のアノテーション付けに使用できます。
org.codehaus.jackson.annotate.JsonAnySetter
org.codehaus.jackson.annotate.JsonAutoDetect
org.codehaus.jackson.annotate.JsonClass
org.codehaus.jackson.annotate.JsonContentClass
org.codehaus.jackson.annotate.JsonCreator
org.codehaus.jackson.annotate.JsonGetter
org.codehaus.jackson.annotate.JsonIgnore
org.codehaus.jackson.annotate.JsonIgnoreProperties
org.codehaus.jackson.annotate.JsonKeyClass
org.codehaus.jackson.annotate.JsonProperty
org.codehaus.jackson.annotate.JsonPropertyOrder
org.codehaus.jackson.annotate.JsonSetter
org.codehaus.jackson.annotate.JsonSubTypes
org.codehaus.jackson.annotate.JsonSubTypes.Type
org.codehaus.jackson.annotate.JsonTypeInfo
org.codehaus.jackson.annotate.JsonTypeName
org.codehaus.jackson.annotate.JsonValue
org.codehaus.jackson.annotate.JsonWriteNullProperties
org.codehaus.jackson.map.annotate.JsonCachable
org.codehaus.jackson.map.annotate.JsonDeserialize
org.codehaus.jackson.map.annotate.JsonSerialize
org.codehaus.jackson.map.annotate.JsonTypeIdResolver
org.codehaus.jackson.map.annotate.JsonTypeResolver
org.codehaus.jackson.map.annotate.JsonView

こうしたアノテーションは、POJO を JSON との間で変換する方法をより細かく制御するために使用できます。

手順

  1. POJO をリソース・メソッドのパラメーターまたは戻りの型として使用します。
  2. アプリケーションまたは JSON メディア・タイプと共に javax.ws.rs.core.Produces アノテーションまたは javax.ws.rs.core.Consumesアノテーションをリソース・メソッドに追加します。

タスクの結果

Jackson を使用して JSON データを POJO との間でアンマーシャルまたはマーシャルできるリソースを実装しました。

以下の例は、人の集合を戻すためのリソースと、人に対する挨拶文を処理するために使用されるリソースを示しています。
public class Person {

    private String firstName;
    private String lastName;

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}
public class Greeting {

    private String greeting;

    public String getGreeting() {
        return this.greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }

}
import java.util.List;
import java.util.ArrayList;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import   javax.ws.rs.core.MediaType;

@Path("/people")
public class JacksonResource {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Person> getPersonList() {
        List<Person> personArray = new ArrayList<Person>();
        
        Person firstPerson = new Person();
        firstPerson.setFirstName("John");
        firstPerson.setLastName(“Doe”);
        personArray.add(firstPerson);
        
        Person secondPerson = new Person();
        secondPerson.setFirstName(“Fred”);
        secondPerson.setLastName("Thompson");
        personArray.add(secondPerson);
        
        return personArray;
    }
    
    @Path("/greet")
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Greeting createGreetingForPerson(Person person) {
        String name = person.getFirstName() + “ “ + person.getLastName();
        Greeting greeting = new Greeting();
        greeting.setGreeting(“Hello “ + name);
        return greeting;
    }

}
GET 要求を JacksonResource リソースに対して発行すると、以下のコード・スニペットのように JSON コンテンツが応答で戻されます。
[{"firstName":"John","lastName":"Doe"},{"firstName":"Fred","lastName":"Thompson"}]
POST 要求を JacksonResource に対して発行すると、以下のコード・スニペットのように JSON コンテンツが要求として送信され、Person オブジェクトに格納されます。
{"firstName":"John","lastName":"Doe"}
以下のコード・スニペットのように JSON コンテンツが応答で戻されます。
{"greeting":"Hello John Doe"}

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



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