it-roy-ru.com

Правильный набор зависимостей для использования картографа Джексона

Я новичок в Джексоне, и я писал код для практики. Я обнаружил, что новую версию библиотеки Джексона можно найти на Fasterxml: Джексон , поэтому я добавил следующие зависимости в мой файл pom 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>

Я ожидал, что смогу использовать ObjectMapper напрямую, однако потратив много времени, я обнаружил, что для использования ObjectMapper я должен добавить старые библиотеки ниже:

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

Я немного смущен. Может кто-нибудь сказать мне, почему это?

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>

у вас есть ObjectMapper (из пакета Jackson Databind) под рукой . если это так, вы можете сделать:

JsonFactory factory = objectMapper.getFactory();

Источник: https://github.com/FasterXML/jackson-core

Таким образом, для ObjectMapper достаточно 3 «быстрых xml» зависимостей, которые у вас уже есть в u'r pom, так как они включают jackson-databind.

33
ASD

Нет, вы можете просто использовать com.fasterxml.jackson.databind.ObjectMapper. Скорее всего, вы забыли исправить свои операторы import-, удалить все ссылки на codehaus, и вы не ошиблись.

6
specializt

Имена пакетов в Jackson 2.x изменены на com.fasterxml1 с org.codehaus2 . Поэтому, если вам просто нужен ObjectMapper, я думаю, что Jackson 1.X удовлетворит ваши потребности.

2
chenrui

Помимо исправления импорта, сделайте новый maven clean compile -U. Обратите внимание на опцию -U, которая вводит новые зависимости, с которыми редактору иногда трудно работать. Пусть компиляция завершится неудачей из-за не импортированных классов, но по крайней мере у вас есть возможность импортировать их после команды maven.

Просто делать Maven-> Reimport из Intellij не работает для меня. 

1
nilesh

Я потратил несколько часов на это.

Даже если у меня была правильная зависимость, проблема была исправлена ​​только после того, как я удалил папку com.fasterxml.jackson в репозитории .m2 в C:\Users\username.m2 и обновил проект

0
QGA