RestTemplate으로 JSON 객체 리스트 가져오기 (매핑)

이 글은 ParameterizedTypeReference 공부가 목표이다.

JSON Array 를 3가지 (객체 배열, POJO 배열, POJO 리스트) 로 바꾸는 것을 살펴보자.

  • 아래를 웹 요청시 받는 JSON으로 가정하자.

[{
  "id": 1,
  "name": "user1",
}, {
  "id": 2,
  "name": "user2"
}]
  • 매핑에 사용될 User 객체

public class User {
    private int id;
    private String name;

    // getters and setters..
}
  • 유저 관련 서비스 인터페이스

public class UserConsumerServiceImpl implements UserConsumerService {

    private final RestTemplate restTemplate;

    public UserConsumerServiceImpl(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

...
}

1 객체 배열 매핑

  • 타입을 Object[]로 지정

2 POJO 배열 매핑

  • 타입을 User[].class 로 지정

3 POJO 리스트 매핑

앞선 두가지 방은 ObjectUser 든 스프링이 런타임시 타입 정보를 알 수있다. 하지만, 제너릭 정보는 런타임시 사라지기에 List<User>.class 를 위처럼 그대로 사용하면 안된다. ParameterizedTypeReference 를 사용한다.

참고 자료

  • https://www.baeldung.com/spring-resttemplate-json-list

Last updated