[Java] Jackson/Gson

Hyo Kyun Lee·2024년 10월 21일
0

Java

목록 보기
50/66

1. 개요

java에서 json 데이터를 처리하기 위해 사용할 수 있는 라이브러리는 크게 두가지가 존재한다.

  • jackson : 자바용 json 라이브러리로 잘 알려져 있지만 Json 뿐만 아니라 XML/YAML/CSV 등 다양한 형식의 데이터를 지원한다. Object, Array, Key-Value 형태로 이루어져 있으며 String, Int, Long, Boolean 등의 타입을 지원한다.
  • gson : java에서 json 데이터를 파싱하기 위해 구글에서 개발한 오픈소스 라이브러리이다.

FEP(REST API)에서, 다른 업무에서도 마찬가지이겠지만 기본적으로 json body 파싱할 경우 사용할 라이브러리를 일원화하여 관리하는 것이 좋다.

사용하고 있는 프레임워크나 환경 등에 맞춰서 알맞은 라이브러리를 선택하여 사용해야 한다.

2. Jackson/Gson의 차이점

  1. Jackson
  • 장점
    -> spring framework에서 기본적으로 사용, 다른 라이브러리와 상호 호환성이 높다.
    -> json, xml, yaml 등 다양한 데이터 형식을 지원한다.
    -> 변환처리 시 gson에 비해 속도가 약간 유리하다.
    -> Jackosn 라이브러리에 내장된 object mapper가 다양한 커스텀을 지원한다.
    -> 보안 등 지속적인 라이브러리 업데이트가 가능하다.

  • 단점
    -> 초기 설정이 복잡하고 높은 이해도가 필요하다.

  1. Gson
  • 장점
    -> 사용 및 설정이 간단하다.
    -> Gson 내장 객체인 JsonObject를 활용하여 key-value를 가지는 map 형태 marshal / unmarshal에 적합하다.

  • 단점
    -> 사용자 custom에 제한적이다.
    -> Jackson 대비하여 변환, 지원범위 등이 떨어진다.
    -> 추가적인 dependency가 필요하다(기본 내장 라이브러리가 아님)

  1. Jackson/Gson
    -> Jacskon은 대용량, Gson은 적은용량에 최적화되어 있다는 내용도 있으나 기술적 근거는 없다.
    -> 단순히 소규모 모듈에서 Json 변환 용도로만 사용한다면 Gson이 유리할 수 있다.

FEP에서는 key-value형태의 전문 데이터를 파싱하기 위한 용도로 사용하므로 gson이 유리할 수 있지만, 후에 일원화할 경우 두 기능의 차이가 심하므로 초기 단계부터 일관적인 라이브러리를 사용해야 한다.

3. 참고자료

jackson 개념1 - https://hianna.tistory.com/631
jackson 개념2 - https://www.lesstif.com/java/java-json-library-jackson-24445183.html
jakson 라이브러리 - https://edder773.tistory.com/312

gson - https://www.google.com/search?q=gson+java&sca_esv=3830138d5daf0584&sxsrf=ADLYWILIxi4jT8QRjpblM0-5ORPS9SSQfw%3A1729513606000&source=hp&ei=hUgWZ97TOY_t1e8PkLvMuAQ&iflsig=AL9hbdgAAAAAZxZWlt4I-bizdpIzk21IEee9abNvGqJo&oq=&gs_lp=Egdnd3Mtd2l6IgAqAggAMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCMgcQIxgnGOoCSM8FUABYAHABeACQAQCYAQCgAQCqAQC4AQHIAQCYAgGgAgeoAgqYAweSBwExoAcA&sclient=gws-wiz

0개의 댓글