Springboot
[스프링 부트] Object Mapper
코딩 못하는 감자
2024. 6. 25. 21:35
@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으로 사용하지 않겠다고 선언하면 된다.