private static void byGson() {
// 표준 ISO 스타일이 아닐 경우는 포멧 지정 필요
GsonBuilder builder = new GsonBuilder().setDateFormat("yyyy-MM-dd");
Gson gson = builder.create();
Map<String, Map<String, Object>> map = gson.fromJson(jsonData, Map.class);
List<Map<String, Object>> dailyBoxOfficeList = (List)map.get("boxOfficeResult").get("dailyBoxOfficeList");
for(Map<String, Object> info: dailyBoxOfficeList) {
// 문자열로 변경 후 다시 객체로 변환할 수밖에 없나..
String strInfo = gson.toJson(info);
MovieInfo mi = gson.fromJson(strInfo, MovieInfo.class);
System.out.println(mi);
}
}
MovieInfo에는 문자열이 아닌 Date 타입이 들어있기 때문에 문자열 -> Date로 변경하기 위한 포멧을 등록해야한다. 따라서 바로 Gson을 만들지 않고 GsonBuilder를 사용했다. 다만 여기서 주어진 날짜의 포멧은 ISO 형식이므로 위 예에서플 사용하지 않아도 무관하다.
필요한 지점까지 이동한 후 리스트 안의 Map을 드디어 MovidInfo로 변환할 수 있다.