programing

잭슨 VS지손

randomtip 2022. 9. 3. 09:50
반응형

잭슨 VS지손

JSON을 찾기 위해 기존 라이브러리를 검색한 결과, 다음과 같은 두 가지 결과가 나왔습니다.

  • 잭슨
  • 구글 GSon

저는 GSON에 대해 조금 편파적이지만, 인터넷에서는 GSon이 어떤 천상의 퍼포먼스 문제를 겪고 있다고 합니다(2009년 9월 현재).

저는 비교를 계속하고 있습니다.그동안 결정을 내리기 위해 도움을 구하고 있습니다.

지난 주에 이 조사를 했는데 같은 도서관 2개가 나왔어요.Spring 3(기본 Json 뷰 'JacksonJsonView'에서 Jackson을 채택한 것)을 사용하고 있기 때문에, 같은 것을 사용하는 것이 당연했습니다.두 lib는 거의 비슷해마지막에는 json 파일에 매핑됩니다. : )

어쨌든 잭슨은 퍼포먼스에 +가 있다고 하셨는데, 그건 저에게 매우 중요합니다.웹페이지에서 볼 수 있듯이 프로젝트도 매우 활발하고, 그것도 매우 좋은 징조입니다.

Jackson과 Gson은 실제 데이터 바인딩 지원에 관한 가장 완전한 Java JSON 패키지입니다.다른 많은 패키지는 원시적인 맵/리스트(또는 동등한 트리 모델) 바인딩만 제공합니다.양쪽 모두 범용 타입을 완전하게 서포트하고 있어, 많은 일반적인 유스케이스에 대응할 수 있는 충분한 설정성도 갖추고 있습니다.

Jackson에 대해 더 잘 알고 있기 때문에 잭슨이 Gson보다 더 완벽한 지원을 받고 있다고 생각하는 몇 가지 측면이 있습니다(Gson 기능을 놓친 경우 사과).

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

Gson 1.6에는 로우 레벨 스트리밍 API와 잭슨보다 빠른 새로운 파서가 포함되어 있습니다.

위의 답변에 추가.대소문자를 구분하지 않는 것이 중요한 경우 Jackson을 사용합니다.Gson은 키 이름의 대소문자를 구분하지 않지만 Jackson은 대소문자를 구분하지 않습니다.

다음은 관련 링크 2개입니다.

(아니오) Gson에서 대소문자를 구분하는 지원: GSON: Json에서 대소문자를 구분하는 요소를 얻는 방법

Jackson https://gist.github.com/electrum/1260489에서 대소문자를 구분하는 지원

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

언급URL : https://stackoverflow.com/questions/2378402/jackson-vs-gson

반응형