Ceci est la page d'accueil du projet Jackson.
(Remarque: Pour les informations à la sortie à jour, voir les versions de Jackson)
Jackson est connu comme "la bibliothèque Java Json" ou "le meilleur analyseur JSON pour Java". Ou simplement comme "JSON pour 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; et même le grand ensemble de modules de format de données pour prendre en charge les types de données de types de données largement utilisés tels que la goyave, le joda, les pcollections et bien d'autres (voir ci-dessous).
Tandis que les composants principaux réels vivent dans leurs propres projets - y compris les trois packages principaux (streaming, databind, annotations); bibliothèques de format de données; bibliothèques de types de données; Fournisseur JAX-RS; et un ensemble divers d'autres modules d'extension - ce projet agit comme le centre central pour lier toutes les pièces ensemble.
Un bon compagnon de cette lecture est la FAQ du projet Jackson.
Jackson Suite a deux versions principales: 1.x est obsolète et aucune versions n'est publiée; 2.x est la version activement développée. Ces deux grandes versions utilisent des packages Java différents et des ID d'artefacts Maven, ils ne sont donc pas mutuellement compatibles, mais peuvent coexister pacifiquement: un projet peut dépendre de Jackson 1.x et 2.x, sans conflits. Ceci est par conception et a été choisi comme stratégie pour permettre une migration plus fluide de 1.x à 2.x.
Les dernières versions stables de ces branches sont:
La façon recommandée d'utiliser Jackson passe par des référentiels Maven; Les versions sont effectuées au référentiel Maven central (CMR). Les pages wiki des projets individuels contiennent parfois également des liens de téléchargement direct, pointant vers le CMR.
Les notes de libération pour les versions 2.x sont trouvées sur la page des versions de Jackson.
La plupart des projets énumérés ci-dessous sont dirigés par l'équipe de développement de Jackson; Mais certains par d'autres membres de la communauté Jackson en général. Nous essayons de conserver le versioning de modules compatibles pour réduire la confusion quant aux versions qui fonctionnent ensemble.
Les modules de base sont le fondement sur lesquels les extensions (modules) s'appuient. Il existe actuellement 3 de ces modules (à partir de Jackson 2.x):
streaming ; Cela dépend à la fois des packages streaming et annotations Ces extensions sont le Module Jackson Plug-In (enregistré avec ObjectMapper.registerModule() ) et ajouter la prise en charge des données de diverses bibliothèques Java couramment utilisées, en ajoutant des sérialiseurs et des désérialiseurs afin que le package de Jackson databind ( ObjectMapper / ObjectReader / ObjectWriter ) puisse lire et écrire ces types.
Les modules de type de données directement entretenus par l'équipe Jackson sont sous les référentiels GitHub suivants:
jackson-module-parameter-names : Module qui ajoute une prise en charge de l'utilisation d'une nouvelle fonctionnalité JDK8, de la capacité d'accéder aux noms du constructeur et des paramètres de méthode, pour permettre l'omission @JsonProperty .jackson-datatype-jsr310 : Prise en charge des "dates Java 8" (celles ajoutées dans JDK 8)jackson-datatype-jdk8 : Prise en charge des types de données JDK 8 autres que les types de date / heure, y compris OptionalMoney , CurrencyUnit )javax.json ) et "New" ( jakarta.json ):jakarta.json ( ajouté dans Jackson 2.12.2 )javax.jsonJSONObject , JSONArrayDe plus, nous sommes conscients de modules supplémentaires qui ne sont pas directement entretenus par l'équipe Core Jackson:
jackson-dataformat-protobuf qui ajoute la prise en charge du contenu de l'encodage / décodage Protobuf mais qui ne dépend pas de la bibliothèque Java Protobuf standardcom.github.caligin.tinytypes , artefact tinytypes-jackson )org.vertx.java.core.json.JsonObject objets (types de nœuds org.json ) Les fournisseurs Jackson Jax-RS ont des gestionnaires pour ajouter la prise en charge de DataFormat pour les implémentations JAX-RS (comme Jersey, ReSeasy, CXF). Les fournisseurs implémentent MessageBodyReader et MessageBodyWriter . Les formats pris en charge incluent actuellement JSON , Smile , XML , YAML et CBOR .
Les modules de format de données offrent une prise en charge des formats de données autres que JSON. La plupart d'entre eux implémentent simplement les abstractions d'API streaming , afin que le composant de données puisse être utilisé tel quel; Certains offrent (et peu nécessitent) des fonctionnalités de niveau databind supplémentaires pour gérer des choses comme les schémas.
Les modules de format de données suivants sont actuellement entièrement utilisables et pris en charge (numéro de version entre parenthèses, si inclus, est la première version Jackson 2.x à inclure le module; si elle manque, incluse à partir de 2.0)
streaming plus la prise en charge supplémentaire databind pour les schémas AVROstreaming , avec des ajouts databind de commodité facultatifsAvrostreaming , pas de modifications pour databindstreaming et databindstreaming et databind . Semblable au mode "Code-First" de JAXB (pas de prise en charge pour "XML Schema First", mais peut utiliser Jaxb Beans)streamingIl existe également d'autres modules de format de données, fournis par les développeurs en dehors de Jackson Core Team:
MsgPack )Les annotations de Jackson définissent les propriétés prévues et la manipulation attendue pour Pojos, et en plus de Jackson lui-même en utilisant ceci pour la lecture / écriture de JSON et d'autres formats, il permet également la génération de schémas externes. Certaines de ces fonctionnalités sont incluses dans les extensions de format de données susmentionnées ci-dessus; Mais il existe également de nombreux outils de schéma autonome, tels que:
Les autres modules entièrement utilisables par équipe plus rapide comprennent:
@JacksonInject (ou en plus de)JAXB comme alternative (en plus de ou au lieu de) Annotations Jackson standard@JacksonInject@JsonProperty .Bien que Jackson Databind soit un bon choix pour la liaison des données à usage général, son empreinte et ses frais généraux de démarrage peuvent être problématiques dans certains domaines, tels que les téléphones mobiles; et surtout pour une utilisation légère (quelques lectures ou écrites). De plus, certains développeurs trouvent une API Jackson complète écrasante.
Pour toutes ces raisons, nous avons décidé de créer une bibliothèque beaucoup plus simple et plus petite, qui prend en charge un sous-ensemble de fonctionnalités, appelé Jackson Jr. Il s'appuie sur l'API de streaming Jackson, mais ne dépend pas de Databind. En conséquence, sa taille (en pot et utilisation de la mémoire d'exécution) est considérablement plus petite; Et son API est très compacte.
Si vous souhaitez aider avec Jackson Project, veuillez consulter la contribution.
Vous pouvez également vérifier:
Les composants de Jackson sont soutenus par la communauté Jackson via des listes de diffusion, Gitter Forum, Github Issues. Voir contribution pour plus de détails.
En plus du support communautaire gratuit (pour tous), le support d'entreprise - en démarrant avec la version 2.10 - est disponible dans le cadre de l'abonnement Tidelift pour (la plupart) des composants Jackson.
Les responsables de Jackson et des milliers d'autres packages travaillent avec Tidelift pour fournir un support commercial et une maintenance pour les dépendances open source que vous utilisez pour créer vos applications. Économisez du temps, réduisez les risques et améliorez la santé du code, tout en payant les maintenseurs des dépendances exactes que vous utilisez. Apprendre encore plus.
Le mécanisme recommandé pour signaler des vulnérabilités de sécurité possibles suit ce que l'on appelle le «plan de divulgation coordonné» (voir la définition du DCP pour l'idée générale). La première étape consiste à déposer un contact de sécurité Tidelift: TideLift acheminera tous les rapports via leur système vers les responsables des packages pertinents, et commencera le processus qui évaluera les préoccupations et émettra des correctifs possibles, envoyez des avis de mise à jour, etc. Notez que vous n'avez pas besoin d'être un abonné Tidelift pour déposer un contact de sécurité.
Alternativement, vous pouvez également signaler les vulnérabilités possibles aux info à l'adresse postale FasterXML DOT COM. Notez que le dépôt d'un problème pour aller avec le rapport est bien, mais si vous le faites, n'incluez pas les détails du problème de sécurité dans le problème, mais uniquement dans le contact par e-mail. Il est important de nous donner le temps de fournir un patch, si nécessaire, pour le problème.
Les bogues de Jackson doivent être signalés contre les composants qu'ils affectent: pour cette raison, le suivi des problèmes n'est pas activé pour ce projet. Si vous ne savez pas quel problème de projet spécifique affecte, le composant le plus probable est jackson-databind , vous utiliseriez donc Jackson Databind Issue Tracker.
Pour des suggestions et de nouvelles idées, essayez les idées futures de Jackson
Pour les nouveaux utilisateurs, il existe de nombreux bons tutoriels d'utilisation de Jackson, y compris les tutoriels généraux d'utilisation / JSON:
et des tutoriels plus spécifiques:
Les rapports suivants ont été publiés sur les composants de Jackson
Puisque vous voulez probablement que les opinions des développeurs Java ne soient pas liées au projet Jackson, concernant la bibliothèque à utiliser, voici des liens vers certaines des comparaisons indépendantes existantes: