SAStrutsでJSONを返す
SAStrutsでDBから取得した情報を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をつけるようにすればいいのだろうか。でもどれをつける、つけないが問題になったり、そのためにアノテーションや設定を書くのもなんだかなぁということになりそう
댓글 없음:
댓글 쓰기