본문 바로가기
IT 개발/개념정리

[JAVA] Json to VO, 간편한 변환 방법

by Dev.Jeon 2023. 1. 11.
반응형

JAVA에서 Json을 간편하게 VO에 담을 수 있는 

Gson과 Jackson 라이브러리를 소개하겠습니다.

 

목차

1. Gson과 Jackson이란?

2. Gson과 Jackson 차이

3. 라이브러리 추가

4. Json to VO 파싱

5. 그외 이슈사항

 

1.  Gson과 Jackson이란?

  Jackson  

Json뿐 아니라 XML/YAML/CVS 등 다양한 형식의 데이터를 지원하는 라이브러리입니다.

스트림 방식으로 속도가 빠르며 유연해 다양한 third party 데이터 타입을 지원합니다.

 

  Gson  

Gson은 Java Object를 Json 표현으로 변환하는 데 사용할 수 있는 Java 라이브러리로

Json 문자열을 동등한 Java객체로 변환하는 데 사용할 수 있습니다.

Gson은 구글에서 만들었으며, 가벼운 데이터를 처리할 때 성능이 좋다고 합니다.

 


2.  Gson과 Jackson차이

Jackson과 Gson 모두 Java로 Json 데이터 바인딩 지원을 제공하는 완전한 라이브러리입니다.

Jackson은 Spring 프레임 워크에 내장되어 있지만 Gson은 pom.xml에 따로 추가해 줘야 합니다. 


 

3. 라이브러리 추가

  Maven  

Jackson

Spring 프레임 워크가 아닌 경우는 내장되어 있지 않습니다.

jackson-core 및 jackson-annotation 라이브러리의 의존성을 포함하기 때문에 

pom.xml 파일에 아래와 같이 dependency를 추가합니다.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

GSON

Gson 역시 pom.xml에 따로 추가해 줘야 합니다.

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.7</version>
</dependency>

  Gradle  

Jackson

implementation "com.fasterxml.jackson.core:jackson-core:2.9.9"
implementation "com.fasterxml.jackson.core:jackson-annotations:2.9.9"
implementation "com.fasterxml.jackson.core:jackson-databind:2.9.9"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9"

GSON

dependencies {
  implementation 'com.google.code.gson:gson:2.8.7'
}

  직접추가  

Jackson

jar파일을 직접 다운로드할 수 있는 경로는 다음과 같습니다.

jackson-core.jar : https://github.com/FasterXML/jackson-core/wiki

jackson-annotations.jar : https://github.com/FasterXML/jackson-annotations/wiki

jackson-databind.jar : https://github.com/FasterXML/jackson-databind/wiki

 

GSON

https://search.maven.org/artifact/com.google.code.gson/gson/2.8.7/jar

위 링크에서 jar를 직접 다운로드하여서, 라이브러리에 추가합니다.

 


 

4. Json to VO 파싱

Json Data 예시

{"name":"name01", "id":"id01"}

VO 예시

public class TestVo {

    private String name;

    private String id;
}

 

 

  Jackson  

Gson은 pom.xml에 따로 추가해 줘야 합니다.

ObjectMapper mapper = new ObjectMapper();

// JSON 파일에서 읽기
TestVO testVO = mapper.readValue(new File("src/resources/data.json"), TestVO.class);

// String 으로 읽기
TestVO testVO = mapper.readValue("{\"id\":\"a001\", \"name\":홍길동}", TestVO.class);

  Gson  

Json 데이터가 testVO의 user, id에 각각 매핑됩니다.

// Json 문자열
String jsonStr = "{\"id\":a001,\"name\":\"홍길동\"}";
// Gson 객체 생성
Gson gson = new Gson();
// Json 문자열 -> VO 객체
TestVO testVO = gson.fromJson(jsonStr, TestVO.class);

 


 

5. 그외 이슈사항

아시아에서 가장 많이 다운로드 된 취약한 OSS 구성요소 5개 중

Jackson이 1위를 하였습니다.

취약점과 대응방안도 작성되어 있으니

프로젝트에 도움이 되시면 좋겠습니다.

 

https://www.osckorea.com/post/asiaeseo-gajang-manhi-daunrodeu-doen-cwiyaghan-oss-guseongyoso-5gae

 

OSC Korea midia

‍ ‍ Sonatype의 소프트웨어 공급망 현황 보고서에 따르면 지난 2년 동안 오픈 소스 구성 요소 릴리스 공급은 75% 증가했고, 다운로드 요청은 전년 대비 68% 증가했습니다. 하지만 오픈소스 관련 침

www.osckorea.com

 

 

이상으로 Java에서 Gson과 Jackson을 이용해 VO에 파싱하는 방법에 대해서 간략하게 알아보았습니다. 

앞으로도 작업하면서 새롭게 알아가는 부분에 대해서 또 공유 드리겠습니다. 

 


 

<참고사이트>

https://tychejin.tistory.com/134

https://hianna.tistory.com/629

https://ynzu-dev.tistory.com/entry/JAVA-json-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-VO%EB%A1%9C-%ED%8C%8C%EC%8B%B1-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-json-to-java-class

https://velog.io/@z-no_on/JSON-라이브러리-JacksonGSON-비교

반응형

댓글