귀찮은 json 파싱, 자동화해 보자!

서울시, 경기도 공공 데이터 포털 등 많은 open api는 xml이나 json 형식으로 제공됩니다.

서비스의 구현은 자바로 되어있기 때문에 해당 json 데이터를 객체로 변환할 필요가 있습니다.

하지만 이것을 매번 ObjectMapper 등을 사용해서 하기엔 불편하고 귀찮습니다.

한번에 하는 방법이 없을까요?

스프링이 제공하는 강력한 RestTemplate

RestTemplate은 외부를 호출해서 응답값을 받아올 수 있는 편리한 클래스입니다.

스프링이 기본으로 제공하기에 따로 의존성을 관리해줄 필요도 없어서 간편합니다.

// open api 호출 후 응답된 json 데이터를 String으로 받는다.
String jsonString = restTemplate.getForObject(url, String.class);

위와 같이 GET, POST 등 호출 방식도 정해줄 수 있으며 url과 반환 타입만 지정하면 간편하게 응답값을 받을 수 있습니다.

exchange 메서드로 json을 자동 변환하자

하지만 getForObject나 postForObject는 간단한 응답값을 받을 때 사용하는 메서드이기에 자세한 설정을 하기는 어렵습니다.

헤더 값, 객체로서의 반환 타입을 지정하고 싶으면 RestTemplate.exchange() 메서드를 사용하도록 합시다.

exchange 메서드는 다음과 같이 사용할 수 있습니다.

ResponseEntity<List<MyDTO>> responseEntity = restTemplate.exchange(requestEntity, new ParameterizedTypeReference<List<MyDTO>>() {});

requestEntity는 요청 값이며 위 메서드에는 생략되었지만 더욱 다양한 파라미터들이 존재합니다.

헤더 값, GET, POST 설정 등 기존의 다른 메서드들보다 훨씬 자세하게 요청을 할 수 있습니다.

가장 핵심이 되는 부분은 아래의 파라미터입니다.