Android/Json

JSON 어떤 라이브러리를 사용해야 할까?

donghune 2019. 6. 16. 20:56

개발하는 많은 REST API는 응답 데이터 포맷을 JSON으로 선택한다.

( Git hub API만 보아도 알 수 있다시피.. )

 

REST API에 데이터 요청을 보내 값이 돌아오면 값을 파싱하여야 한다.

파싱을 하기 위해서는 역직렬화 ( deserialization ) 과정이 필요하다.

 

현재 굉장히 많은 자바 JSON 라이브러리가 존재하는데 어떤것을 사용해야 하는지 감이 오지 않는다.

https://www.developer.com/lang/jscript/top-7-open-source-json-binding-providers-available-today.html

 

Top 7 Open-Source JSON-Binding Providers Available Today - Developer.com

Top 7 Open-Source JSON-Binding Providers Available Today Introduction (Business Case)             JSON, acronym for JavaScript Object Notation, is a lightweight data-interchange format, an alternative to XML, but smaller, faster and easier to parse. Becaus

www.developer.com

 

위의 기사에서 대략 7가지의 JSON API를 소개하였는데, 아래와 같다.

  • Jackson
  • Google-gson
  • JSON-lib
  • Flexjson
  • Json-io
  • Genson
  • JSONij

대체적으로 많이본 라이브러리는 딱 2개 ( Jackson과 Google-gson )

나머지는 자세히는 모르겠지만 나중에 다뤄보도록 해야겠다.

 

각각의 라이브러리 사용시 걸리는 시간은 아래와 같다.

 

테스트 환경

 

CPU : Intel Core i5 2.50Ghz

RAM : DDR3 4G Single

 

테스트 방식

50회 반복 및 10회 워밍업 반복

위의 그래프는 JSON data 287 Kb 자료의 직렬화 역직렬화의 걸리는 시간을 나타내었다.

 

직렬화 최단 라이브러리 : Flexjson
역 직렬화 최단 라이브러리 : google-gson

직렬화 와 역 직렬화를 동시에 할 경우 ( google-gson )이 111.34 ms 로 가장 빠르것으로 나타났다.

 

위의 그래프는 JSON data 108 Mb 자료의 직렬화 역직렬화의 걸리는 시간을 나타내었다.

 

직렬화 최단 라이브러리 : Jackson
역 직렬화 최단 라이브러리 : JSON-lib

직렬화 와 역 직렬화를 동시에 할 경우 ( Jackson )이 1511.22 ms 로 가장 빠르것으로 나타났다.

 

따라서 대용량 데이터 처리에는 Jackson을 저용량 데이터 처리에는 google-gson을 처리해야 한다는 것을 보여주지만

사용자와 환경에 따라서 잘 선택하는것이 좋아보인다.

 

또한 개발코드도....