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に合わせてるんだけど。
で後は中身が多少アレなのでどうすっかなあという感じか。
一応補足すると、実際にはこの変換はユーザが意識しなくてもいい所なんです。
自動で変換するからね。
うくく。