728x90
1. Jackson이란?
Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하는 데 사용할 수 있는 Java 라이브러리이다.
2. Jackson의 특징
- Stream API: 스트림 형식으로 데이터를 분석하고 생성하기 때문에 성능이 좋다.
- Tree Model: XML의 DOM처럼 Node 형태로 데이터를 다룰 수 있기 때문에 유연성이 좋다.
- 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://www.lesstif.com/java/java-json-library-jackson-24445183.html
반응형
'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 |