잭슨 대 Gson [닫힘]

JSON에 대한 기존 라이브러리를 검색 한 후 마침내이 두 가지로 끝났습니다.

  • 잭슨
  • 구글 GSon

나는 GSON에 대해 약간 부분적이지만, 순전히 GSon은 특정 천상의 성능 문제 (2009 년 9 월 현재)로 고통 받고 있다는 것 입니다.

비교를 계속하고 있습니다. 그 사이에, 나는 내 마음을 구성하는 데 도움을 찾고 있습니다.



답변

나는 지난주 에이 연구를했고 같은 2 개의 도서관으로 끝났습니다. Spring 3 (기본 Json보기 ‘ JacksonJsonView ‘ 에서 Jackson을 채택 함 )을 사용함에 따라 동일한 작업을 수행하는 것이 더 자연 스럽습니다. 2 lib는 거의 동일합니다 … 결국 그들은 단순히 json 파일에 매핑됩니다! 🙂

어쨌든 잭슨 은 성능이 +이고 매우 중요합니다. 웹 페이지 에서 볼 수 있듯이 프로젝트도 매우 활발하며 이는 매우 좋은 신호입니다.


답변

Jackson과 Gson은 실제 데이터 바인딩 지원과 관련하여 가장 완벽한 Java JSON 패키지입니다. 다른 많은 패키지는 기본 맵 /리스트 (또는 동등한 트리 모델) 바인딩 만 제공합니다. 둘 다 일반적인 유형뿐만 아니라 많은 일반적인 사용 사례에 대한 충분한 구성 기능을 완벽하게 지원합니다.

Jackson에 대해 더 잘 알고 있기 때문에 Jackson이 Gson보다 더 완벽하게 지원한다고 생각하는 측면이 있습니다 (Gson 기능이 누락 된 경우 사과).

  • 광범위한 주석 지원; 전체 상속 및 고급 “믹스 인”주석 포함 (직접 주석을 추가 할 수없는 경우 주석을 클래스와 연결)
  • 초 고성능 (또는 메모리 제한) 사용 사례를위한 스트리밍 (증분) 읽기, 쓰기 데이터 바인딩 (바인딩 하위 트리)과 혼합 가능- 편집 : 최신 버전의 Gson에는 스트리밍 리더도 포함
  • 트리 모델 (DOM 유사 액세스); 다양한 모델 간 변환 가능 (트리 <-> Java 객체 <-> 스트림)
  • 기본 생성자뿐만 아니라 모든 생성자 (또는 정적 팩토리 메소드)를 사용할 수 있습니다.
  • 필드 및 게터 / 세터 액세스 (이전의 gson 버전은 필드 만 사용했으며 변경되었을 수 있음)
  • 기본 JAX-RS 지원
  • 상호 운용성 : JAXB 주석도 사용할 수 있으며 공통 패키지 (joda, ibatis, cglib), JVM 언어 (groovy, clojure, scala)에 대한 지원 / 해결 방법이 있습니다.
  • 출력에 대해 정적 (선언 된) 유형 처리를 강제하는 기능
  • 다형성 유형의 역 직렬화 지원 (Jackson 1.5)-목록과 같은 항목을 직렬화하고 역 직렬화 할 수 있습니다 (추가 유형 정보 사용).
  • 이진 콘텐츠에 대한 통합 지원 (base64와 JSON 문자열 간)

답변

Gson 1.6에는 이제 낮은 수준의 스트리밍 API와 실제로 Jackson보다 빠른 새로운 파서가 포함되어 있습니다.


답변

위에서 이미 다른 답변에 추가. 대소 문자를 구분하지 않는 것이 중요하다면 Jackson을 사용하십시오. 잭슨은 Gson이 키 이름에 대해 대소 문자를 구분하지 않습니다.

여기 두 개의 관련 링크가 있습니다

(아니요) Gson 에서 대소 문자 구분 지원 :
GSON : Json에서 대소 문자 구분 요소를 얻는 방법은 무엇입니까?

Jackson의 대소 문자 구분 지원
https://gist.github.com/electrum/1260489


답변

GSon은 JAXB를 지원하지 않는 것 같습니다. JAXB 어노테이션이있는 클래스를 사용하여 JSON 메시지를 작성하거나 처리함으로써 스프링 MVC를 사용하여 동일한 클래스를 공유하여 Restful Web Service 인터페이스를 작성할 수 있습니다.