본문 바로가기
Java

[SpringBoot] json 문자열 받아서 model class 에 맵핑하기

by bryan.oh 2021. 10. 21.
반응형
여러 클라이언트에서 Spring Boot 로 요청을 보내려고 할 때, Json 만큼 편한건 없는것 같습니다.
json 문자열을 보냈을 때 Spring 에서 model class 에 맵핑하는 방법을 정리해 보겠습니다.

 

1. Single json

아래와 같은 json 문자열이 있을 때

{"name": "bryan", "city": "Seoul", "age": 18, "cars": ["GV80", "X6", "GLE350"]}

Java(SpringBoot)에서는 다음과 같이 model class 를 준비합니다.

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

@Getter
@Setter
@ToString
public class UserInfo {
    private String name;
    private String city;
    private Integer age;
    private List<String> cars;
}

 

그리고 Controller 에서 아래와 같이 설정합니다.

여기서 중요한건 @RequestBody 를 붙혀야 한다는 것입니다.

@Slf4j
@RestController
public class HelloController {
    @GetMapping("/model")
    public ResponseEntity<String> modelTest(@RequestBody UserInfo userInfo){
       log.debug("userInfo = {}", userInfo.toString());
       return ResponseEntity.ok(userInfo.toString());
    }
}

 

테스트 해보기 !

호출하기 위해서 Postman 을 사용합니다.

Body > raw > JSON 을 선택하고 json 문자열을 입력합니다.

 

그리고 요청을 날리면~~

class 에 값이 반영되고 리턴된것을 확인할 수 있습니다.

 

 

2. json array

[
    {"name": "bryan", "city": "Seoul", "age": 18, "cars": ["GV80", "X6", "GLE350"]},
    {"name": "hello", "city": "Pusan", "age": 19, "cars": ["GV70", "X5", "GLE250"]},
    {"name": "tistory", "city": "Suwon", "age": 20, "cars": ["G80", "M5", "GLA200"]}
]

이렇게 json list 가 있을 때는

Controller 에서 받는 파라메터를 List 로만 바꾸면 됩니다.

그리고 Postman 그대로 실행

List 의 model class 로 맵핑된걸 확인했습니다.

 

728x90
반응형

댓글