잭슨 프로젝트의 홈페이지입니다.
(참고 : 최신 릴리스 정보는 Jackson Releases 참조)
Jackson은 "Java Json Library"또는 "Java를위한 최고의 JSON 파서"로 알려져 있습니다. 또는 단순히 "Json for Java"로서.
그 이상으로 Jackson은 Java (및 JVM 플랫폼)를위한 데이터 프로세싱 도구, JSON Parser / Generator Library, 일치하는 데이터 바인딩 라이브러리 (Pojos to and JSON) 및 추가 데이터 형식 모듈을 Avro, BSON, CBOR, CSV, SMILE, (JAVA) PROPERTIES, TOML, XML 또는 XML, TOML, XML, TOML, XML, TOML, XML; 그리고 Guava, Joda, Pcollections 등과 같은 널리 사용되는 데이터 유형의 데이터 유형을 지원하기위한 대규모 데이터 형식 모듈 세트조차도 아래 참조.
실제 핵심 구성 요소는 3 개의 핵심 패키지 (스트리밍, Databind, Annotations)를 포함하여 자체 프로젝트에서 살고 있습니다. 데이터 형식 라이브러리; 데이터 유형 라이브러리; JAX-RS 제공 업체; 기타 확장 모듈 세트 -이 프로젝트는 모든 조각을 서로 연결하기위한 중앙 허브 역할을합니다.
이 readme의 좋은 동반자는 Jackson Project FAQ입니다.
Jackson Suite에는 두 가지 주요 버전이 있습니다. 1.x는 더 이상 사용되지 않고 버전이 출시되지 않습니다. 2.X는 적극적으로 개발 된 버전입니다. 이 두 가지 주요 버전은 서로 다른 Java 패키지와 Maven Artifact ID를 사용하므로 상호 호환되지 않지만 평화롭게 공존 할 수 있습니다. 프로젝트는 충돌없이 Jackson 1.X 및 2.X에 의존 할 수 있습니다. 이것은 설계에 의한 것이며 1.x에서 2.x에서 더 부드러운 마이그레이션을 허용하는 전략으로 선정되었습니다.
이 분기의 최신 안정 버전은 다음과 같습니다.
Jackson을 사용하는 권장 방법은 Maven 리포지토리를 통한 것입니다. CMR (Central Maven Repository)에 릴리스가 이루어집니다. 개별 프로젝트의 Wiki 페이지에는 때때로 CMR을 가리키는 직접 다운로드 링크도 포함됩니다.
2.x 릴리스의 릴리스 노트는 Jackson Releases 페이지에서 찾을 수 있습니다.
아래에 나열된 대부분의 프로젝트는 Jackson Development Team이 주도합니다. 그러나 일부는 다른 대단한 잭슨 커뮤니티 회원들에 의해. 우리는 어떤 버전이 함께 작동하는지에 대한 혼란을 줄이기 위해 모듈의 버전을 호환하려고 노력합니다.
핵심 모듈은 확장 (모듈)이 구축되는 기초입니다. 현재 3 개의 모듈이 있습니다 (Jackson 2.X 기준).
streaming 패키지에서 데이터 바인딩 (및 객체 직렬화) 지원을 구현합니다. streaming 및 annotations 패키지에 따라 다릅니다 이러한 확장자는 플러그인 Jackson Module S ( ObjectMapper.registerModule() 에 등록)이며, Jackson databind 패키지 ( ObjectMapper / ObjectReader / ObjectWriter )가 이러한 유형을 읽고 쓸 수 있도록 Serializers 및 Deserializers를 추가하여 일반적으로 사용되는 다양한 Java 라이브러리의 데이터 유형에 대한 지원을 추가합니다.
Jackson Team이 직접 유지 관리하는 데이터 유형 모듈은 다음 Github 리포지토리 아래에 있습니다.
jackson-module-parameter-names : 새로운 JDK8 기능 사용에 대한 지원을 추가하는 모듈, 생성자 이름 및 메소드 매개 변수에 액세스 할 수있는 능력 및 @JsonProperty 생략 할 수 있습니다.jackson-datatype-jsr310 : "Java 8 날짜"지원 (JDK 8에 추가 된 것)jackson-datatype-jdk8 : Optional 포함한 날짜/시간 유형 이외의 JDK 8 데이터 유형 지원Money , CurrencyUnit )javax.json ) 및 "new"( jakarta.json )에 대한 두 개의 데이터 유형 모듈 :jakarta.json 의 "새로운"JSON-P 유형에 대한 지원 ( Jackson 2.12.2에 추가 )javax.json 의 "Old"JSON-P 유형에 대한 지원JSONObject , JSONArray 와 같은 org.json 라이브러리 유형 지원또한 Core Jackson Team이 직접 유지 관리하지 않는 추가 모듈을 알고 있습니다.
jackson-dataformat-protobuf 와는 다르며, 이는 Protobuf 컨텐츠 인코딩/디코딩에 대한 지원을 추가하지만 표준 Java Protobuf 라이브러리에 의존하지 않는 것과는 다릅니다.com.github.caligin.tinytypes , artifact tinytypes-jackson )이 포함됩니다.org.vertx.java.core.json.JsonObject 객체 (repacked org.json 노드 유형)를위한 Jackson-datatype-Vertx Jackson Jax-RS 제공 업체에는 JAX-RS 구현에 대한 DataFormat 지원을 추가 할 수있는 핸들러가 있습니다 (Jersey, Reseasy, CXF). 제공자는 MessageBodyReader 및 MessageBodyWriter 구현합니다. 지원되는 형식에는 현재 JSON , Smile , XML , YAML 및 CBOR 포함됩니다.
데이터 형식 모듈은 JSON 이외의 데이터 형식을 지원합니다. 대부분은 단순히 streaming API 추상화를 구현하므로 데이터베이닝 구성 요소가 그대로 사용될 수 있습니다. 일부는 Schemas와 같은 것을 처리하기위한 추가 databind 레벨 기능을 제공합니다.
현재 다음 데이터 형식 모듈은 완전히 사용할 수 있고 지원됩니다 (포함 된 경우 괄호 안의 버전 번호는 모듈을 포함하는 첫 번째 Jackson 2.X 버전입니다. 누락 된 경우 2.0에서 포함).
streaming 구현과 AVRO Schemas에 대한 추가 databind 빈 -레벨 지원이 포함 된 AVRO 데이터 형식을 지원합니다.databind 추가 기능을 갖춘 streaming API.Avro 와 유사하게 지원되었습니다streaming API를 통한 100% API/논리 모델, databind 의 변경 사항 없음streaming 및 databind 구현을 지원하는 Toml을 지원합니다.streaming 및 databind 구현을 모두 제공합니다. JAXB ' "Code-First"모드와 유사합니다 ( "XML Schema First"에 대한 지원은 없지만 JAXB Bean을 사용할 수 있습니다)streaming 구현을 통해 완전히 지원됩니다.Jackson Core Team 이외의 개발자가 제공하는 다른 데이터 형식 모듈도 있습니다.
MsgPack ) 형식을 추가합니다Jackson Annotations는 Pojos에 대한 의도 된 속성 및 예상 처리를 정의하며 JSON 및 기타 형식을 읽고 쓰기 위해이 작업을 사용하여 Jackson 자체 외에도 외부 스키마를 생성 할 수 있습니다. 이 기능 중 일부는 위에서 언급 한 데이터 형식 확장에 포함됩니다. 그러나 다음과 같은 많은 독립형 스키마 도구가 있습니다.
FasterXML 팀의 기타 완전 사용 가능한 모듈에는 다음이 포함됩니다.
@JacksonInject (또는 그에 추가) 대신 Guice 인젝터 (및 기본 Guice 주석)의 주입 값을 허용하는 확장JAXB 주석을 대안으로 사용하여 (그 외에 또는 대신) 표준 Jackson 주석을 사용할 수 있습니다.@JacksonInject 주석을 통해 OSGI 레지스트리에서 값을 주입 할 수 있습니다.@JsonProperty 지정하지 않도록 제작자 (생성자, 공장 방법) 매개 변수 이름을 자동으로 파악하기위한 작은 확장.Jackson Databind는 일반 목적 데이터 바인딩에 적합한 선택이지만, 발자국과 시작 오버 헤드는 휴대 전화와 같은 일부 도메인에서 문제가 될 수 있습니다. 특히 가벼운 사용법 (몇 가지 읽기 또는 쓰기). 또한 일부 개발자는 전체 Jackson API가 압도적 인 것을 발견했습니다.
이러한 모든 이유로, 우리는 Jackson Jr라는 기능의 하위 집합을 지원하는 훨씬 간단하고 작은 라이브러리를 만들기로 결정했습니다. Jackson Streaming API를 기반으로하지만 Databind에 의존하지 않습니다. 결과적으로 크기 (JAR 및 런타임 메모리 사용량 모두)는 상당히 작습니다. API는 매우 작습니다.
Jackson Project를 돕고 싶다면 기여를 확인하십시오.
체크 아웃 할 수도 있습니다.
Jackson 구성 요소는 Jackson Community에서 메일 링리스트, Gitter Forum, Github 문제를 통해 지원됩니다. 자세한 내용은 기고를 참조하십시오.
무료 (모두) 커뮤니티 지원 외에도 버전 2.10으로 시작하는 Enterprise Support는 (대부분의) Jackson 구성 요소에 대한 TideLift 구독의 일부로 제공됩니다.
Jackson 의 관리자와 수천 개의 다른 패키지는 Tidelift와 협력하여 응용 프로그램을 구축하는 데 사용하는 오픈 소스 의존성에 대한 상업적 지원 및 유지 보수를 제공하고 있습니다. 사용하는 정확한 종속성을 유지 관리자에게 지불하면서 시간을 절약하고 위험을 줄이며 코드 건강을 향상시킵니다. 자세히 알아보십시오.
가능한 보안 취약점을보고하기위한 권장 메커니즘은 소위 "조정 된 공개 계획"을 따릅니다 (일반 아이디어는 DCP의 정의 참조). 첫 번째 단계는 TideLift 보안 연락처를 제출하는 것입니다. TideLift는 시스템을 통해 모든 보고서를 관련 패키지의 유지 관리자에게 라우팅하고 문제를 평가하고 가능한 수정 사항을 발행하고 업데이트 통지를 보내는 프로세스를 시작합니다. 보안 연락처를 제출하기 위해 TideLift 구독자가 될 필요는 없습니다.
또는 FasterXML DOT COM 메일 링 주소에서 info 에 가능한 취약점을보고 할 수도 있습니다. 보고서와 함께 가야 할 문제를 제출하는 것은 괜찮지 만, 그렇게하면 문제에 보안 문제에 대한 세부 정보가 포함되지 않고 이메일 연락처에만 포함하지 마십시오. 이것은 필요한 경우 문제에 대한 패치를 제공 할 시간을주는 것이 중요합니다.
Jackson Bugs는 영향을 미치는 구성 요소에 대해보고해야합니다. 이러한 이유로이 프로젝트에는 문제 추적기가 활성화되지 않습니다. 어떤 특정 프로젝트 문제가 영향을 미치는지 확실하지 않은 경우 가장 가능성이 높은 구성 요소는 jackson-databind 이므로 Jackson Databind 문제 추적기를 사용합니다.
제안과 새로운 아이디어를 얻으려면 Jackson의 미래 아이디어를 시도하십시오
처음 사용자의 경우 일반 사용 / JSON 튜토리얼을 포함하여 많은 좋은 Jackson 사용 자습서가 있습니다.
보다 구체적인 튜토리얼 :
Jackson 구성 요소에 대한 다음 보고서가 게시되었습니다
어떤 도서관과 관련하여 Jackson Project와 관련이없는 Java 개발자의 의견을 원하기 때문에 다음은 기존의 독립 비교에 대한 링크입니다.