Object Mapper란?
- JSON 형태의 Data를 Java객체로 역직렬화(Deserialize) 시켜 주거나, 반대로 Java객체를 JSON으로 직렬화(Serialize)할때 이용하는 Jackson 라이브러리의 클래스
- 직렬화(Serialize) : Object → String(json)
- 역직렬화(Deserialize) : String(json) → Object
- ObjectMapper는 생성비용이 비싸서 bean/static으로 처리하는 것이 좋다.
- 스프링 부트의 경우에는 기본적으로 Jackson라이브러리가 존재한다.
Jackson 라이브러리 프로젝트에 추가하기
Maven인 경우 → pom.xml 의 태그에 추가
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
Gradle인 경우 → bulid.gradle의 dependencies 블록안에 추가
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'
ObjectMapper 클래스 이용해보기
VO 생성
- HelloData클래스를 이용해서 ObjectMapper를 사용해보자
import lombok.Getter;
import lombok.Setter;
@Getter @Setter @AllArgsConstructor
public class HelloData {
private String username;
private int age;
}
Java Object → JSON으로 파싱
writeValueAsString()
를 사용하면 java객체를 JSON으로 직렬화 할 수 있다.
ObjectMapper objectMapper = new ObjectMapper();
HelloData helloData = new HelloData("kim", 20);
String helloJSON = objectMapper.writeValueAsString(helloData); //{"username":"kim","age":20}
JSON → Object로 파싱
readValue()
를 사용해서 JSON 형태를 Java객체로 역직렬화가 가능하다.
Stirng helloJSON = objectMapper.writeValueAsString(helloData); //{"username":"kim","age":20}
HelloData hello = objectMapper.readValue(helloJSON, HelloData.class); //text객체를 HelloData클래스로 변환
주의할점 : VO클래스에서 메서드나 생성자 이름에 get이라는 단어가 들어가면 오류가 날 수 있다
반응형