JAVAでJSONオブジェクトを扱ってみた。

いくつかライブラリがあるようですが、今回は JSON-lib

を試してみた。

セットアップは下記のサイトを参考にした。

http://json-lib.sourceforge.net/

メインのライブラリ

json-lib-2.4-jdk15.jar


ライブラリに依存関係があるので以下のライブラリも使用する

commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
ezmorph-1.0.6.jar

サンプルとしてサーバタイムより

年月日 時分秒を設定したJSONオブジェクトの作成

JSONObject jsonObj = new JSONObject();

SimpleDateFormat dateformat = new SimpleDateFormat();

Date now = new Date();

dateformat.applyPattern("yyyy");
jsonObj.put("year", dateformat.format(now));

dateformat.applyPattern("MM");
jsonObj.put("month", dateformat.format(now));

dateformat.applyPattern("dd");
jsonObj.put("day", dateformat.format(now));

dateformat.applyPattern("HH");
jsonObj.put("hour", dateformat.format(now));

dateformat.applyPattern("mm");
jsonObj.put("minute", dateformat.format(now));

dateformat.applyPattern("ss");
jsonObj.put("second", dateformat.format(now));


上記のオブジェクトをJavaScriptで下記のように処理する

json がサーバから取得したJSONオブジェクト

var year = json.year;
var month = json.month;
var day = json.day;
var hour = json.hour;
var minute = json.minute;
var second = json.second;

var str = year + "年" + month + "月" + day + "日 "
+ hour + "時" + minute + "分" + second + "秒";

str の結果は下記になる。

2011年09月19日 13時13分45秒

JAVAからJSONオブジェクトの作り方は、他にもパターンが存在する。

http://www.masatom.in/pukiwiki/JSON/Json-lib%A4%F2%BB%C8%A4%A6/Java%A4%AB%A4%E9JSON%A4%D8%A4%A4%A4%ED%A4%F3%A4%CA%CA%D1%B4%B9/



Restletを試してみる。

1.ライブラリの取得
 サーブレットコンテナ(Tomcat)上で動かすので、Edition for Java EE をダウンロード
 (2011/9/4時点、2.0.9)
 http://www.restlet.org/downloads/stable

2.Eclipseでの開発

 1.プロジェクトの新規作成(動的Webプロジェクト)
   プロジェクト名(sampleRestlet)

 2.ServerResource のサブクラスを作成

  モデルクラスのようなレイヤーのようです。

  アノテーション @Get でこのクラスを呼び出すと実行されるメソッドを指定するようだ。
  今回は hello,world を返却するメソッドを1つのみ実装  

  例)
  public class HelloWorldResource extends ServerResource {

 @Get
 public String represent(){
  return "hello, world";
 }

  }

3.Application のサブクラスを実装

  コントローラクラスのようなレイヤーのようです。

  web.xmlで、RestletのサーブレットクラスとMappingさせます。

  ここで、URL毎にServerResource のサブクラスとのルーティング(呼び出しの制御)を行う

  例)
  public class FirstStepsApplication extends Application {

  @Override
  public synchronized Restlet createInboundRoot(){
  Router router = new Router(getContext());
// アプリ名/hello で HelloWorldResource.class のメソッドを呼び出す。
  router.attach("/hello",HelloWorldResource.class);
  
      return router;

  }
  }
  
4.サーブレット(リクエスト)とApplication のサブクラスのマッピング

  web.xmlの設定

  Restletの実行URLを定義

<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
  
  このアプリケーション内の全てのアクセスをRestletで処理させる

<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<!-- Application class name -->
<param-name>org.restlet.application</param-name>
<param-value>firstSteps.FirstStepsApplication</param-value>
</init-param>
</servlet>

  Restletで処理する場合に、実行する application のサブクラス(firstSteps.FirstStepsApplication)を指定

5.ライブラリの追加
org.restlet.jar
org.restlet.ext.servlet.jar
を WEB-INF/lib に配置
   Eclipseでは、Web Appライブラリとして認識されていること。


6.Tomcat起動

7.実行
http://localhost:8080/sampleRest/hello

画面に hello, world が表示される。

参考HP

http://wiki.restlet.org/docs_2.0/13-restlet/275-restlet/312-restlet.html
名古屋城は、本丸御殿が改修中とのことで、

その様子も確認できた。

名古屋に来たから、行ってみたが珍しいものがみれてよかった。


Exerionのブログ(仮)-本丸御殿1