Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

ResponseConverter実験その2

再帰とゴミが問題だったのでJSONObject自作してみた。
元のJSONObjectはMapベースなんでもっと簡単にできないかなあと。

Test

Hoge hoge = new Hoge();
hoge.setName("ccc");
hoge.setValue("ddd");
JSONObject json = new JSONObject(hoge);
assertEquals("{\"value\":\"ddd\",\"name\":\"ccc\"}", json.toString());

このように出力されます。

{"value":"ddd","name":"ccc"}

うむ、しきいが下がった。(気がする)
(なんでもOKってわけではない。一部ルール必要だけど)
個人的にはDtoをボーンと渡してJSONになってくれればスッキリする。

こんなんもできるぽい。

Test

Map map = new HashMap();
map.put("a", "b");
List list = new ArrayList();
Hoge hoge1 = new Hoge();
hoge1.setName("ccc");
hoge1.setValue("ddd");
list.add(hoge1);
Hoge hoge2 = new Hoge();
hoge2.setName("eee");
hoge2.setValue("fff");
list.add(hoge2);
map.put("A", list);
JSONObject json = new JSONObject(map);
System.out.println(json.toString());
assertEquals(
"{\"a\":\"b\",\"A\":[{\"value\":\"ddd\",\"name\":\"ccc\"},{\"value\":\"fff\",\"name\":\"eee\"}]}",
                json.toString());

Hogeの配列なのでこんなイメージ。

{"a":"b","A":[{"value":"ddd","name":"ccc"},{"value":"fff","name":"eee"}]}

キーをquoteするのは必須ではないと思うんだけどどうだったかなあ?
一応JSONObjectに合わせてるんだけど。
で後は中身が多少アレなのでどうすっかなあという感じか。
一応補足すると、実際にはこの変換はユーザが意識しなくてもいい所なんです。
自動で変換するからね。
うくく。