web-dev-qa-db-fra.com

Ensemble correct de dépendances pour utiliser le mappeur de Jackson

Je suis nouveau à Jackson et j'écrivais du code pour la pratique. J'ai découvert que la nouvelle version de la bibliothèque Jackson se trouve sur Fasterxml: Jackson , j'ai donc ajouté les dépendances ci-dessous à mon fichier pav Maven:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.2.2</version>
</dependency>

Je m'attendais à pouvoir utiliser directement la ObjectMapper; cependant, après avoir passé beaucoup de temps, j'ai découvert que pour utiliser la ObjectMapper, je devais ajouter les anciennes bibliothèques ci-dessous:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.2</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.2</version>
</dependency>

Je suis un peu confus. Quelqu'un pourrait-il s'il vous plaît me dire pourquoi est-ce?

48
Hossein
<properties>
  <!-- Use the latest version whenever possible. -->
  <jackson.version>2.4.4</jackson.version>
</properties>
<dependencies>
   <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
  </dependency>
</dependencies>

vous avez un objet ObjectMapper (du paquet Jackson Databind) à portée de main . Si oui, vous pouvez faire:

JsonFactory factory = objectMapper.getFactory();

Source: https://github.com/FasterXML/jackson-core

Ainsi, les 3 dépendances "plus rapides" que vous avez déjà dans votre pom suffisent à ObjectMapper car il inclut jackson-databind.

33
ASD

Non, vous pouvez simplement utiliser com.fasterxml.jackson.databind.ObjectMapper. Vous avez probablement oublié de corriger vos instructions import-, supprimez toutes les références à codehaus et vous êtes en or.

6
specializt

Les noms de package dans Jackson 2.x ont été changés en com.fasterxml1 à partir de org.codehaus2 . Donc, si vous avez juste besoin d’ObjectMapper, je pense que Jackson 1.X peut répondre à vos besoins.

2
chenrui

En plus de réparer les importations, faites un maven clean compile -U frais. Notez l'option -U, qui introduit de nouvelles dépendances avec lesquelles l'éditeur a parfois du mal à fonctionner. Laissez la compilation échouer à cause de classes non importées, mais vous avez au moins la possibilité de les importer après la commande maven.

Faire juste Maven-> Réimporter d'Intellij n'a pas fonctionné pour moi. 

1
nilesh

J'ai passé quelques heures à ce sujet.

Même si j'avais la bonne dépendance, le problème n'était résolu qu'après avoir supprimé le dossier com.fasterxml.jackson dans le référentiel .m2 sous C:\Users\nomutilisateur.m2 et mis à jour le projet.

0
QGA