개요
Jackson 은 자바용 json 라이브러리로 잘 알려져 있지만 Json 뿐만 아니라 XML/YAML/CSV 등 다양한 형식의 데이타를 지원하는 data-processing 툴이다.
스트림 방식이므로 속도가 빠르며 유연하며 다양한 third party 데이타 타입을 지원하며annotation 방식으로 메타 데이타를 기술할 수 있으므로 JSON 의 약점중 하나인 문서화와 데이타 validation 문제를 해결할 수 있다.
구성
core module
- Streaming("jackson-core") : defines low-level streaming API, and includes JSON-specific implementations
- Annotations ("jackson-annotations") : contains standard Jackson annotations
- Databind ("jackson-databind") :implements data-binding (and object serialization) support on streaming package; it depends both on streaming and annotations packages
사용
maven 설정
databind 는 jackson-core, jackson-annotation 에 의존성이 있으므로 pom 파일에는 databind 모듈만 기술해주면 된다.
POJO 와 사용
https://github.com/FasterXML/jackson-databind/
com.fasterxml.jackson.databind.ObjectMapper 인스턴스 생성
json 데이타를 java object 로 변환
File, URL, String 방식으로 데이타를 읽어올 수 있음.
java object 를 json 으로 변환
json 으로 변환시 개행하여 포맷팅
위와 같은 json 데이타를 다음처럼 보기 좋게 출력하려면 ObjectMapper.writerWithDefaultPrettyPrinter를 사용하면 된다.
Generic Collation/Tree Model 로 사용
Configurator
Annotation
@JsonIgnoreProperties
크게 2가지 용도가 있으며 첫 번째는 Serializer/Deserialize 시 제외시킬 프로퍼티를 지정한다. 다음과 같이 지정하면 foo, bar는 제외된다. 개별 프로퍼티를 제외하려면
@JsonIgnore annotation을 프로퍼티에 적용하면 된다.
@JsonProperty
getter/setter 의 이름을 property 와 다른 이름을 사용할 수 있도록 설정한다. Database 를 자바 클래스로 매핑하는데 DB의 컬럼명이 알기 어려울 경우등에 유용하게 사용할 수 있다.
다음과 같은 테이블이 있을 경우
다음과 같이 JsonProperty 를 사용하면 DB 의 컬럼명을 변경하지 않아도 가독성을 높일 수 있다.
json 으로 변환된 결과
@JsonInclude
Serialize 시 동작을 지정한다. 기본적으로 잭슨은 값의 유무와 상관없이 무조건 serialize 하게 되지만 다음과 같이 설정할 경우 not null 이거나 none empty 일 경우에만 serialize 된다.
'자바스토리 > Spring' 카테고리의 다른 글
SPRING BOOT & JASPER (1) | 2023.11.27 |
---|---|
RequestParam examples (0) | 2017.06.01 |
log4jdbc-remix 설정 (0) | 2016.03.07 |
logging framework logback (0) | 2016.03.07 |
스프링 AOP (0) | 2016.02.29 |