JSONからPOJO(Bean)に変換する処理はめんどくさいです。
Google社製のGSONでは、データ形式にListや配列としてバインドすることができます。
で、コードはこんな感じ。
class GsonList {
public static void main(String[] args) {
Gson gson = new Gson();
// List.classと書けないので、TypeTokenを使ってTypeを取り出す
Type type = new TypeToken>() {}.getType();
// JSON->List
List his = gson.fromJson(new InputStreamReader(
GsonList.class.getResourceAsStream("history_list.json")), type);
System.out.println("---step1 List---");
System.out.println(his);
// JSON->POJO[]
History[] his2 = gson.fromJson(new InputStreamReader(
GsonList.class.getResourceAsStream("history_list.json")), History[].class);
System.out.println("---step2 []---");
System.out.println(Arrays.toString(his2));
}
/**
* 解析結果を受け取るクラス
*/
static class History {
private int key;
private String message;
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("[");
sb.append("key=").append(key);
sb.append(" message=").append(message);
sb.append("]");
return new String(sb);
}
}
}
出力結果は次の通り。
---step1 List---
[[key=894 message=遣唐使], [key=1192 message=鎌倉幕府], [key=1185 message=鎌倉幕府]]
---step2 []---
[[key=894 message=遣唐使], [key=1192 message=鎌倉幕府], [key=1185 message=鎌倉幕府]]
インプットしたJSONは次の通り。
[
{
"key": 894,
"message": "遣唐使"
},
{
"key": 1192,
"message": "鎌倉幕府"
},
{
"key": 1185,
"message": "鎌倉幕府"
}
]
0 件のコメント:
コメントを投稿