@SpringBootTest
class RestApiApplicationTests {
@Autowired
private ObjectMapper objectMapper;
@Test
void contextLoads() throws JsonProcessingException {
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("hong@gmail.com");
user.setIsKorean(true);
var json =objectMapper.writeValueAsString(user); //직렬화
System.out.println(json);
var dto=objectMapper.readValue(json, UserRequest.class); //역직렬화
System.out.println(dto);
}
}
ObjectMapper의 역활
responsebody로 json을 받을 때 dto로 역직렬화를 해주고,
json으로 응답을 내릴 때 직렬화를 해준다.
ObjectMapper는 변수에 직렬화를 할 때 변수에 매칭되는 것이 아니라
get 이름이 붙은 메소드에 매칭이 된다.
반대로 역직렬화를 할 때에는
set 이름이 붙은 메소드에 매칭이 된다.
example: getName, getHumanAge
또한 json이 출력된 것을 확인하면
name, human_age 와 같이 스네이크 형식으로 바뀌어서 출력된 것을 확인할 수 있다.
따라서 getUser()와 같이 다른 get으로 시작하는 메소드를 선언하면
직렬화가 될 때 다른 값을 받을 수 있다.
이에 대한 해결책으론 @JsonIgnore 어노테이션을 붙여 json으로 사용하지 않겠다고 선언하면 된다.
'Springboot' 카테고리의 다른 글
[스프링 부트] 페이지네이션 정보 응답 받기 (0) | 2024.07.01 |
---|---|
[스프링 부트] Entity 매핑 무한루프 (0) | 2024.07.01 |
[스프링 부트] DispatcherSevlet의 역할 (0) | 2024.06.29 |
스프링 부트2 (view 환경설정) (0) | 2024.06.21 |
스프링 부트1 (시작) (0) | 2024.06.21 |