2015年1月8日木曜日

JAX-RSでJSONを出力してみた。

ほぼ自分用のメモ。
JAX-RSでJSONを出力してみました。

これを使えば、JAX-RS + AJAXの組み合わせで
ThinServerアーキテクチャライクなことができる...のか?


(手順)

  1. GlassFishでWebアプリケーションプロジェクトを作成。
  2. パターンからのRESTful Webサービスを作成する。
  3. 単純なルート・リソースを作成
  4. パスを指定(今回はSampleを設定)。* MIME-TYPEには application/jsonを指定。
  5. getJSONメソッド内でJSONを作り文字列にして返す。

* http://localhost:8080/アプリケーション名/webresources/パス がアクセスパスになる。
  RESTful Webサービスディレクトリ配下にあるクラス名を右クリックして
 テスト・リソースURIを選択すると、実行できる。(GlassFishをあらかじめ起動しておく必要がある)


以下、サンプルコードです。

SampleResourde.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sample;

import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObjectBuilder;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;

/**
 * REST Web Service
 *
 * @author USER
 */
@Path("Sample")
public class SampleResource {

    @Context
    private UriInfo context;

    /**
     * Creates a new instance of SampleResource
     */
    public SampleResource() {
    }

    /**
     * Retrieves representation of an instance of sample.SampleResource
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("application/json")
    public String getJson() {
        String json;
        JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
        JsonObjectBuilder objBuilder = Json.createObjectBuilder();
        
        objBuilder.add("time", "2015/01/23 14:30:25");
        objBuilder.add("value", 45.5);
        arrayBuilder.add(objBuilder);
        
        objBuilder.add("time", "2015/01/23 14:30:25");
        objBuilder.add("value", 45.5);
        arrayBuilder.add(objBuilder);
        
        JsonArray jsonArray = arrayBuilder.build();
        json = jsonArray.toString();
        
        return json;
    }

    /**
     * PUT method for updating or creating an instance of SampleResource
     * @param content representation for the resource
     * @return an HTTP response with content of the updated or created resource.
     */
    @PUT
    @Consumes("application/json")
    public void putJson(String content) {
    }
}

出力はこんな感じになります。
(適宜改行入れてます。)

http://localhost:8080/アプリケーション名/webresources/Sample にアクセス。

[
    {
     "time":"2015/01/23 14:30:25",
     "value":45.5
    },{
     "time":"2015/01/23 14:30:25",
     "value":45.5
    }
]

0 件のコメント:

コメントを投稿