[JSON in Java] JSON에서 필요한 데이터 뽑기
참조:
예전에는 JSON.simple 이라는 프로젝트였나본데, 소스 코드를 묶어서 주네요. 의존성도 없고 깔끔하군요. 최근까지도 계속 업데이트를 하고 있는 것 같으니 믿고 써볼만 해 보입니다.
몇일 전 Confluence 위키 내용을 RestTemplate을 이용해서 가져온 적이 있는데, 그 데이터 타입을 XML로 받을까 JSON으로 받을까 고민했었는데 그냥 JSON으로 받기로 했습니다. XML 받아서 OXM으로 파싱해도 되는데 일단 전송되는 텍스트량이 XML은 너무 많고 JSON은 꽤 간결하기 떄문입니다. 그 뒤에 객체로 변환하는 과정이 둘 중에 어떤게 편하냐를 가지고도 판단해보려고 했는데 OXM 써보기도 전에 JSON으로 기울태세 입니다.
RequestCallback callback = new SpringSproutDefaultRestRequestCallBack();
ResponseExtractor<String> extractor = new SpringSproutJsonRestResponseExtractor();
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.execute(SPACE_LIST_URL, HttpMethod.GET, callback, extractor);
System.out.println(result);
// ref: http://decoder.tistory.com/38
JSONObject spaceListJSON = new JSONObject(result);
JSONArray spaceJSONArray = spaceListJSON.getJSONArray("space");
for(int i = 0 ; i < spaceJSONArray.length() ; i++){
JSONObject spaceJSON = spaceJSONArray.getJSONObject(i);
System.out.println(spaceJSON.getString("name"));
System.out.println(spaceJSON.getString("key"));
System.out.println(spaceJSON.getString("description"));
}
캬.... 간단하군요. 이제 저 코드를 Extractor 쪽으로 옮겨서 RestTemplate 호출할 때 자동으로 ConfluenceSpace 컬렉션 객체가 튀어나오도록 해봐야겠습니다.