Java/Spring

Jackson ObjectMapper에서 json data를 Map이 아니라 Object로 받기

체리필터 2018. 9. 12. 11:28
728x90
반응형

API 통신을 하면 보통 데이터 외에 Code나 Message가 같이 오고, 필요한 데이터는 한번 가공해서 받아야 한다.

그런데 이렇게 받게 되는 경우 안의 데이터가 무조건 HashMap으로 받아지게 된다.

이런 경우에 원하는 Object로 받기 위해 제네릭을 사용해 보았지만 역시 맵으로만 받아지게 되어서 구글링을 통해 해결하였다.

 

다음과 같은 방법으로 사용하면 된다.

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.core.type.TypeReference;

String response = restTemplate.postForObject(apiUrl, userDto, String.class);
ApiResponseDto<UserDto> apiResponseDto = jsonMapper.readValue(response, new TypeReference<ApiResponseDto<UserDto>>() {});

 

 

참고한 스택오버 플로우 : https://stackoverflow.com/questions/11664894/jackson-deserialize-using-generic-class

728x90
반응형