728x90
반응형
RestTemplate을 사용하여 JSON 배열을 List<ResYhIftkUserApiListDTO> 타입의 객체로 매핑하는 방법
1. DTO 클래스 정의
먼저, JSON 응답을 매핑할 DTO(Data Transfer Object) 클래스를 정의합니다.
API가 다음과 같은 JSON 배열을 반환한다고 가정합니다:
[
{
"userId": 1,
"userName": "John Doe",
"email": "johndoe@example.com"
},
{
"userId": 2,
"userName": "Jane Smith",
"email": "janesmith@example.com"
}
]
이 JSON 구조에 맞춰 ResYhIftkUserApiListDTO 클래스를 정의합니다.
public class ResYhIftkUserApiListDTO {
private Integer userId;
private String userName;
private String email;
// Getters and Setters
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "ResYhIftkUserApiListDTO{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", email='" + email + '\'' +
'}';
}
}
2. JSON 배열을 List로 매핑하기
이제 RestTemplate을 사용해 GET 요청을 보내고, JSON 배열 응답을 List<ResYhIftkUserApiListDTO>로 매핑해보겠습니다.
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.web.client.RestTemplate;
import java.util.List;
public class RestTemplateExample {
public static void main(String[] args) {
// RestTemplate 인스턴스 생성
RestTemplate restTemplate = new RestTemplate();
// GET 요청을 보낼 URL
String url = "https://example.com/api/users";
// ParameterizedTypeReference를 사용하여 리스트 타입 지정
List<ResYhIftkUserApiListDTO> userList = restTemplate.exchange(
url,
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<ResYhIftkUserApiListDTO>>() {}
).getBody();
// 결과 출력
if (userList != null) {
userList.forEach(System.out::println);
}
}
}
3. 설명
- exchange(): RestTemplate의 exchange() 메서드를 사용하면 더 다양한 HTTP 요청을 처리할 수 있으며, 특히 제네릭 타입을 처리할 때 유용합니다. 여기서는 HttpMethod.GET을 사용해 GET 요청을 보냈습니다.
- ParameterizedTypeReference: Java의 제네릭 타입을 처리하기 위해 ParameterizedTypeReference를 사용합니다. 이 클래스는 응답 타입을 지정할 때 필요한 정보를 제공합니다. 여기서는 List<ResYhIftkUserApiListDTO> 타입의 응답을 받기 위해 사용됩니다.
- getBody(): exchange() 메서드는 ResponseEntity를 반환하며, 실제 응답 내용은 getBody() 메서드로 가져올 수 있습니다.
4. 실행 결과
위 코드를 실행하면, 지정된 URL에서 JSON 배열을 가져와 List<ResYhIftkUserApiListDTO>로 매핑하고, 각 항목을 콘솔에 출력합니다.
ResYhIftkUserApiListDTO{userId=1, userName='John Doe', email='johndoe@example.com'}
ResYhIftkUserApiListDTO{userId=2, userName='Jane Smith', email='janesmith@example.com'}
728x90
반응형
'JAVA > SPRING' 카테고리의 다른 글
[SPRING] fixedDelay (0) | 2024.09.17 |
---|---|
[Spring] Stringtils equals/ equalsAny/ equalsIgnoreCase/ equalsAnyIgnoreCase (0) | 2024.09.03 |
[Spring] RestTemplate (0) | 2024.08.29 |
[SPRING] 예외 추상화 (0) | 2024.06.14 |
[SPRING] [Lombok]@ToString 추가 (0) | 2024.03.18 |