Back-End/Spring

Jackson 라이브러리 - ObjectMapper, Object를 json으로 파싱하기

LightSource 2022. 6. 5. 23:19

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이라는 단어가 들어가면 오류가 날 수 있다

반응형