Java

[Java] JSON 변환 라이브러리 Jackson에 대해

범데이 2022. 11. 22. 00:52

1. Jackson이란?

Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하는 데 사용할 수 있는 Java 라이브러리이다.

(jackson - Github주소)

 

 

2. Jackson의 특징

  1. Stream API: 스트림 형식으로 데이터를 분석하고 생성하기 때문에 성능이 좋다.
  2. Tree Model: XML의 DOM처럼 Node 형태로 데이터를 다룰 수 있기 때문에 유연성이 좋다.
  3. Data Binding: POJO기반의 자바 객체들을 JSON으로 변환시킬 수 있다.

 

 

3. Jackson의 코어 모듈

  • Streaming("jackson-core"): 로우레벨 스트리밍 API를 정의하고 JSON관련 구현을 포함한다.
  • Annotations("jackson-annotations"): 표준 Jackson 주석을 포함한다.
  • Databind("jackson-databind"): 스트리밍 패키지에서 데이터 바인딩(및 개체 직렬화) 지원을 구현한다. 스트리밍 및 주석 패키지 모두에 따라 다르다.

 

4. Jackson 사용 방법

maven설정

databind는 jackson-core, jackson-annotation에 의존성이 있으므로 pom 파일에는 databind모듈만 기술해주면 된다.

 

[pom.xml]

<properties> 
	<jackson.version>2.11.2</jackson.version> 
</properties>
 
<dependencies>		
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
</dependencies>

 

 

 

5. 활용 코드 살펴보기

아래 코드는 jackson라이브러리를 사용하여 Object와 String간 상호 변환 작업을 할 수 있도록 구현한 메서드이다.

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public static String objToString(Object obj) {
    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
    String data = null;
    try {
        data = mapper.writeValueAsString(obj);
    } catch (JsonProcessingException e1) {
        e1.printStackTrace();
    }
    return data;
}

public static <T> T stringToObject(String json, Class<T> class1) {
    ObjectMapper mapper = new ObjectMapper();
    try {
        return mapper.readValue(json, class1);
    } catch (IOException e) {
        LOG.error(e.getMessage(), e);
    }
    return null;

}

 

mapper.enable(DeserializationFeature feature)

지정된 DeserializationConfig 기능을 활성화한다.

위의 코드에서는 SerializationFeature.INDENT_OUTPUT을 설정하여 예쁜 인쇄를 설정한다.

 

mapper.writeValueAsString(Object value) 

String타입으로 변환할 대상을 주어 변환한다.

 

mapper.readValue(String content, Class<T>valueType)

content: 지정된 타입으로 변환할 대상을 설정한다.

valueType: 대상을 어떤 타입으로 변환할 것인지 클래스를 명시한다.

 

 

 


#References

https://fasterxml.github.io/jackson-databind/javadoc/2.7/com/fasterxml/jackson/databind/ObjectMapper.html

https://www.lesstif.com/java/java-json-library-jackson-24445183.html

https://engaspect.tistory.com/27

https://tychejin.tistory.com/134

반응형

'Java' 카테고리의 다른 글

[Java] Null Check  (0) 2022.11.25
[Java] 예외처리  (0) 2022.09.22
[Java] 빌더 패턴(Builder Pattern)에 대해  (0) 2022.08.30
[Java] Ubuntu에 AdoptOpenJDK 설치  (0) 2022.08.10
Java로 간단한 콘솔 연락처 프로그래밍  (0) 2021.07.09