728x90
object mapper 란?
클라이언트와 서버간에 Text인 JSON을 Parsing하여 Object로 받거나, Object를 Text인 JSON으로 변경하여주는 기능입니다.
실습
여기서는 object-mapper의 동작방식을 알기 위해 명시적으로 object-mapper를 사용하는 방법을 실습하겠습니다.
우선 object-mapper 라는 이름으로 Java 프로젝트를 생성하고, spring web에 dependencies를 설정합니다.
이번에는 main이 아니라 test에 간단한 코드를 심어서 실습을 합니다.
Test에 있는 ObjectMapperApplicationTests에 아래와 같이 추가 코드를 작성합니다.
package com.example.objectmapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@SpringBootTest
class ObjectMapperApplicationTests {
@Test
void contextLoads() throws JsonProcessingException {
System.out.println("---------------");
var objectMapper = new ObjectMapper();
//object --> text
//object mapper는 get method를 참조함 user 에 getter가 필요함
var user = new User("steve",30,"010-1111-2222");
var text = objectMapper.writeValueAsString(user);
System.out.println(text);
// text --> object
// object mapper는 default 생성자가 필요함
var objectUser = objectMapper.readValue(text, User.class);
System.out.println(objectUser);
}
}
User 클래스를 만들어서 object mapper를 통해 주고 받습니다.
package com.example.objectmapper;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
private String name;
private int age;
//snake_case 테스트하는 부분
@JsonProperty("phone_number")
private String phoneNumber;
public User(String name, int age, String phoneNumber) {
this.name = name;
this.age = age;
this.phoneNumber = phoneNumber;
}
//object mapper는 json --> object 변경할 때 default 생성자가 필요하다
//default 생성자가 없으면 에러가 발생함
public User() {
this.name=null;
this.age=0;
this.phoneNumber = null;
// TODO Auto-generated constructor stub
}
//object mapper는 object --> json 으로 변경할 때 getter가 필요하며,
//getter가 없으면 에러가 발생한다.
public String getPhoneNumber() {
return phoneNumber;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
// object mapper를 사용할 때 이름에 get이 들어가는 method를 만들면 에러가 발생한다.
// public User getDefaultUser() {
// return new User("default",0);
// }
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", phoneNumber=" + phoneNumber + "]";
}
}
주석처리한 부분과 같이 object mapper를 사용할 때는 이름에 get이 들어가는 method를 정의해서 사용하게 되면
에러가 발생한다고 합니다. 이 부분만 주의해 주시면 되겠습니다.
위 내용은 FastCampus - Java & SpringBoot로 시작하는 웹 프로그래밍 강의를 참고했습니다.
728x90
'Programming > Springboot' 카테고리의 다른 글
Gradle 프로젝트를 Maven프로젝트로 Convert 하는 방법(for Eclipse) (0) | 2022.08.29 |
---|---|
DI(Dependency Injection) 의존성 주입이란? (0) | 2022.08.19 |
댓글