Dies ist die Startseite des Jackson -Projekts.
(Hinweis: Für aktuelle Versionsinformationen finden Sie in Jackson Releases).
Jackson ist als "The Java Json Library" oder "der beste JSON -Parser für Java" bekannt. Oder einfach als "JSON für Java".
More than that, Jackson is a suite of data-processing tools for Java (and the JVM platform), including the flagship streaming JSON parser / generator library, matching data-binding library (POJOs to and from JSON) and additional data format modules to process data encoded in Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, TOML, XML or YAML; und sogar der große Satz von Datenformatmodulen zur Unterstützung von Datentypen von weit verbreiteten Datentypen wie Guave, Joda, PCollections und vielen, vielen anderen (siehe unten).
Während die tatsächlichen Kernkomponenten in ihren eigenen Projekten leben - einschließlich der drei Kernpakete (Streaming, Datenbank, Annotationen); Datenformatbibliotheken; Datentypbibliotheken; JAX-RS-Anbieter; und eine verschiedene andere Erweiterungsmodule - dieses Projekt fungiert als zentraler Drehscheibe, um alle Teile miteinander zu verbinden.
Ein guter Begleiter dieser Readme ist die FAQ des Jackson -Projekts.
Jackson Suite hat zwei Hauptversionen: 1.x ist veraltet und es werden keine Versionen veröffentlicht. 2.x ist die aktiv entwickelte Version. Diese beiden Hauptversionen verwenden verschiedene Java-Pakete und Maven-Artefakt-IDs, sodass sie sich nicht gegenseitig kompatibel sind, aber friedlich koexistieren können: Ein Projekt kann sowohl von Jackson 1.x als auch von 2.x ohne Konflikte abhängen. Dies gilt und wurde als Strategie ausgewählt, um eine reibungslose Migration von 1.x bis 2.x zu ermöglichen.
Die neuesten stabilen Versionen aus diesen Zweigen sind:
Empfohlene Möglichkeit zur Verwendung von Jackson erfolgt über Maven -Repositories. Veröffentlichungen werden an Central Maven Repository (CMR) gemacht. Die Wiki -Seiten der einzelnen Projekte enthalten manchmal auch direkte Download -Links, die auf CMR hinweisen.
Versionshinweise für 2.x -Veröffentlichungen finden Sie auf der Seite von Jackson Releases.
Die meisten unten aufgeführten Projekte werden vom Jackson -Entwicklungsteam geleitet. Aber einige von anderen Mitgliedern der Jackson-Community. Wir versuchen, die Version von Modulen beizubehalten, um die Verwirrung darüber zu verringern, welche Versionen zusammenarbeiten.
Kernmodule sind die Grundlage, auf der Erweiterungen (Module) aufbauen. Derzeit gibt es 3 solche Module (ab Jackson 2.x):
streaming Paket; Es hängt sowohl von streaming als auch annotations ab Diese Erweiterungen sind Plug-in-Jackson Module S (registriert mit ObjectMapper.registerModule() ) und fügen Unterstützung für Datenatypen verschiedener häufig verwendeter Java-Bibliotheken hinzu, indem Serialisierer und Deserializer hinzugefügt werden, damit Jackson- databind ( ObjectMapper / ObjectReader / ObjectRiter / ObjectWriter ) diese Typen lesen und schreiben kann.
Datentyp -Module, die direkt vom Jackson -Team gepflegt wurden, stehen unter den folgenden Github -Repositories:
jackson-module-parameter-names : Modul, das Unterstützung für die Verwendung einer neuen JDK8-Funktion, die Fähigkeit zum Zugriff auf Namen von Konstruktor- und Methodenparametern erhält, um @JsonProperty wegzulassen.jackson-datatype-jsr310 : Unterstützung für "Java 8-Daten" (eine in JDK 8 hinzugefügt)jackson-datatype-jdk8 : Unterstützung für JDK 8-Datentypen als Datums-/Zeittypen, einschließlich OptionalMoney , CurrencyUnit )javax.json ) und "neu" ( jakarta.json ):jakarta.json ( hinzugefügt in Jackson 2.12.2 ).javax.jsonJSONObject , JSONArrayDarüber hinaus sind uns zusätzliche Module bekannt, die vom Core Jackson -Team nicht direkt gepflegt werden:
jackson-dataformat-protobuf , der die Unterstützung für Codierung/Dekodierungsprotobufinhalte erhöht, die jedoch nicht von der Standard-Java-Protobuf-Bibliothek abhängtcom.github.caligin.tinytypes , Artefakt tinytypes-jackson )org.vertx.java.core.json.JsonObject -Objekten (neu verpackte org.json Knotentypen) Jackson JAX-RS-Anbieter haben Handler, um die Unterstützung von DataFormat für JAX-RS-Implementierungen (wie Jersey, Resteasy, CXF) hinzuzufügen. Anbieter implementieren MessageBodyReader und MessageBodyWriter . Zu den unterstützten Formaten gehören derzeit JSON , Smile , XML , YAML und CBOR .
Datenformatmodule bieten Unterstützung für andere Datenformate als JSON. Die meisten von ihnen implementieren lediglich streaming -API -Abstraktionen, sodass die Datenanlagenkomponente so verwendet werden kann. Einige bieten (und einige benötigen) zusätzliche Funktionen auf databind zum Umgang mit Dingen wie Schemata.
Derzeit sind die folgenden Datenformatmodule vollständig verwendbar und unterstützt (Versionsnummer in Klammern, falls eingeschlossen, die erste Jackson 2.x -Version, die Modul enthält; fehlt, fehlen ab 2.0).
streaming -Implementierung sowie zusätzliche Unterstützung für databind -Level für AVRO -Schemasstreaming API, mit optionalen Convenience databind ErgänzungenAvro unterstütztstreaming -API kompatibel ist, keine Änderungen für databindstreaming als auch mit databind unterstützt wirdstreaming als auch databind . Ähnlich wie der "Code-First" -Modus von JAXB (keine Unterstützung für "XML Schema First", kann aber JAXB-Beans verwenden)streamingEs gibt auch andere Datenformatmodule, die von Entwicklern außerhalb des Jackson Core -Teams bereitgestellt werden:
MsgPack ) hinzuJackson -Anmerkungen definieren beabsichtigte Eigenschaften und die erwartete Handhabung für Pojos. Zusätzlich zu Jackson selbst ermöglicht es auch die Erzeugung externer Schemata zum Lesen/Schreiben von JSON und anderen Formaten. Einige dieser Funktionen sind in oben genannten Datenformatverlängerungen enthalten. Es gibt aber auch viele eigenständige Schema-Tools wie:
Weitere vollständig verwendbare Module von FASTERXML -Team sind:
@JacksonInject (oder zusätzlich zu)JAXB -Annotationen als alternative (zusätzlich oder anstelle von) Standard -Jackson -Anmerkungen ermöglichen@JacksonInject Annotation@JsonProperty angegeben wird.Während Jackson Databind eine gute Wahl für die allgemeine Datenbindung ist, können in einigen Domänen wie Mobiltelefonen der Fußabdruck und das Startaufwand problematisch sein. und vor allem für Lichtverbrauch (ein paar Lesevorgänge oder Schreibvorgänge). Darüber hinaus finden einige Entwickler die vollständige Jackson -API überwältigend.
Aus all diesen Gründen haben wir uns entschlossen, eine viel einfachere, kleinere Bibliothek zu erstellen, die eine Teilmenge von Funktionen namens Jackson JR unterstützt. Es baut auf Jackson Streaming -API auf, hängt jedoch nicht von der Datenbank ab. Infolgedessen ist seine Größe (sowohl Glas- als auch Laufzeitverbrauch) erheblich kleiner; und seine API ist sehr kompakt.
Wenn Sie bei Jackson Project helfen möchten, lesen Sie bitte den Beitrag.
Möglicherweise möchten Sie auch auschecken:
Jackson -Komponenten werden von der Jackson -Community durch Mailinglisten, Gitter Forum und Github -Probleme unterstützt. Weitere Informationen finden Sie unter Bereitstellungen.
Zusätzlich zur kostenlosen (für alle) Community -Unterstützung ist Unternehmensunterstützung - Start mit Version 2.10 - als Teil des Tidelift -Abonnements für (meisten) Jackson -Komponenten erhältlich.
Die Betreuer von Jackson und Tausenden anderer Pakete arbeiten mit TIDELIFT zusammen, um kommerzielle Unterstützung und Wartung für die Open -Source -Abhängigkeiten zu liefern, mit denen Sie Ihre Anwendungen erstellen. Sparen Sie Zeit, reduzieren Sie das Risiko und verbessern Sie die Gesundheit des Codes, während Sie die Wartenden der genauen Abhängigkeiten, die Sie verwenden, zahlen. Erfahren Sie mehr.
Der empfohlene Mechanismus zur Berichterstattung über mögliche Sicherheitslücken folgt dem sogenannten "koordinierten Offenlegungsplan" (siehe Definition von DCP für allgemeine Idee). Der erste Schritt besteht darin, einen Tidelift -Sicherheitskontakt einzureichen: TIDELIFT leitet alle Berichte über ihr System an die Wartung der relevanten Pakete (n) und starten Sie den Prozess, der die Besorgnis bewertet und mögliche Korrekturen ausgibt, Aktualisierungshinweise sendet und so weiter. Beachten Sie, dass Sie kein Tidelift -Abonnent sein müssen, um einen Sicherheitskontakt einzureichen.
Alternativ können Sie auch mögliche Schwachstellen für info unter FASTERXML DOT Com Mailing -Adresse melden. Beachten Sie, dass die Einreichung eines Problems mit dem Bericht in Ordnung ist. Wenn Sie dies jedoch tun, geben Sie bitte keine Details zu Sicherheitsproblemen in das Problem, sondern nur im E -Mail -Kontakt. Dies ist wichtig, um uns Zeit zu geben, gegebenenfalls einen Patch für das Problem zu bieten.
Jackson -Fehler müssen gegen Komponenten gemeldet werden, die sie auswirken: Aus diesem Grund ist der Problem Tracker für dieses Projekt nicht aktiviert. Wenn Sie sich nicht sicher sind, welche spezifischen Projektprobleme sich auswirken, ist die wahrscheinlichste Komponente jackson-databind , sodass Sie Jackson Databind Issue Issue-Tracker verwenden würden.
Probieren Sie für Vorschläge und neue Ideen Jackson zukünftige Ideen
Für Erstnutzer gibt es viele gute Tutorials für Jackson-Nutzung, einschließlich allgemeiner Nutzung / JSON-Tutorials:
und spezifischere Tutorials:
Die folgenden Berichte wurden über Jackson -Komponenten veröffentlicht
Da Sie wahrscheinlich Meinungen von Java -Entwicklern wollen, die nicht mit dem Jackson -Projekt zusammenhängen, welche Bibliothek Sie verwenden sollen, finden Sie hier Links zu einigen vorhandenen unabhängigen Vergleichen: