Object Mapper
dto 작성
package com.example.objectmapper;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
private String name;
private int age;
@JsonProperty("phone_number")
private String phoneNumber;
public User() {
this.name = null;
this.age = 0;
this.phoneNumber = null;
}
public User(String name, int age, String phoneNumber) {
this.name = name;
this.age = age;
this.phoneNumber = phoneNumber;
}
// getDefaultUser로 하면 Object Mapper가 잘못 인식하기 때문에 get 없애야 함
public User defaultUser() {
return new User("default", 0, "010-1111-3333");
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getPhoneNumber() {
return phoneNumber;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", phoneNumber='" + phoneNumber + '\'' +
'}';
}
}
Test 코드에 작성
직접 Object Mapper를 객체로 생성해서 활용
var objectMapper = new ObjectMapper(); // var로 타입추론
개념
코드 작성
var user = new User("steve", 10, "010-1111-2222");
var text = objectMapper.writeValueAsString(user);
System.out.println(text);
개념
코드 작성
var objectUser = objectMapper.readValue(text, User.class);
System.out.println(objectUser);
전체 테스트 코드
package com.example.objectmapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class ObjectMapperApplicationTests {
@Test
void contextLoads() throws JsonProcessingException {
var objectMapper = new ObjectMapper();
// object -> text
var user = new User("steve", 10, "010-1111-2222");
var text = objectMapper.writeValueAsString(user);
System.out.println(text);
// text -> object
var objectUser = objectMapper.readValue(text, User.class);
System.out.println(objectUser);
}
}
실행 결과
변환 | 필수 메소드 | 구현 |
Object -> Json(Text) | getter | ObjectMapper 객체의 writeValueAsString(object) |
Json(Text) -> Obejct | default 생성자 | ObjectMapper 객체의 readValue(ㄴtring, 클래스.class) |