2009년 11월 7일 토요일

SAStrutsでJSONを返す

SAStrutsでJSONを返すAdd Star

| 14:17 | はてなブックマーク - SAStrutsでJSONを返す - wataの日記

SAStrutsDBから取得した情報をJSON形式で返したいと思ったのでJSON-libを使ってみた。単純に取得したEntityを変換してやれば終わりだろうと思っていたらJSON-libがpublicフィールドに対応していない。だからといってgetter、setterを追加するのも馬鹿らしいと思ったのでMapに変換してからJSON形式に変換して回避。

ソースは以下のような感じになった。

	private static final String JSON_RES_HEADER = "application/json";

	@Resource
	protected EntityService entityService;

	@Execute(validator = false)
	public String index() {
		Map<String, Object> user = newHashMap();
		// ここでMapに変換
		BeanUtil.copyProperties(entityService.findById("entity"), user);
		ResponseUtil.write(JSONObject.fromObject(user).toString(), JSON_RES_HEADER, "utf-8");
		return null;
	}

publicフィールドは楽だが外部ライブラリを使うとなったときにまだまだ不便だなぁ。クラスロード時に動的にgetter、setterをつけるようにすればいいのだろうか。でもどれをつける、つけないが問題になったり、そのためにアノテーションや設定を書くのもなんだかなぁということになりそう

댓글 없음:

댓글 쓰기