webentwicklung-frage-antwort-db.com.de

Korrigieren Sie die Abhängigkeiten für die Verwendung des Jackson Mapper

Ich bin neu bei Jackson und habe etwas Code zum Üben geschrieben. Ich habe herausgefunden, dass die neue Version der Jackson-Bibliothek auf Fasterxml zu finden ist: Jackson , daher fügte ich der Maven-Pom-Datei die folgenden Abhängigkeiten hinzu:

<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>

Ich hatte erwartet, dass ich die ObjectMapper direkt verwenden kann. Nachdem ich jedoch viel Zeit verbracht hatte, stellte ich fest, dass ich die alten Bibliotheken unten verwenden muss, um die ObjectMapper zu verwenden:

<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>

Ich bin etwas verwirrt. Könnte mir bitte jemand sagen, warum das so ist?

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>

sie haben einen ObjectMapper (aus dem Jackson Databind-Paket) zur Verfügung. Wenn ja, können Sie Folgendes tun:

JsonFactory factory = objectMapper.getFactory();

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

Daher reichen die 3 Abhängigkeiten, die Sie bereits in pom haben, für ObjectMapper aus, da es jackson-databind enthält.

33
ASD

Nein, Sie können einfach com.fasterxml.jackson.databind.ObjectMapper..__ verwenden. Möglicherweise haben Sie vergessen, Ihre import- -Anweisungen zu korrigieren, alle Verweise auf codehaus zu löschen und Sie sind in Ordnung.

6
specializt

Die Paketnamen in Jackson 2.x wurden in com.fasterxml1 von org.codehaus2 geändert. Wenn Sie also nur ObjectMapper benötigen, denke ich, dass Jackson 1.X Ihre Anforderungen erfüllen kann.

2
chenrui

Machen Sie neben dem Importieren auch einen neuen maven clean compile -U. Beachten Sie die -U-Option, die neue Abhängigkeiten mit sich bringt, mit denen der Editor manchmal Schwierigkeiten hat. Lassen Sie die Kompilierung wegen nicht importierter Klassen fehlschlagen, aber Sie haben zumindest eine Option, sie nach dem Befehl maven zu importieren.

Nur Maven-> Reimport von Intellij zu machen, hat für mich nicht funktioniert. 

1
nilesh

Ich habe einige Stunden damit verbracht.

Selbst wenn ich die richtige Abhängigkeit hatte, wurde das Problem erst behoben, nachdem ich den Ordner com.fasterxml.jackson im .m2-Repository unter C:\Users\username.m2 gelöscht und das Projekt aktualisiert hatte

0
QGA