Правильный набор зависимостей для использования картографа Джексона
Я новичок в Джексоне, и я писал код для практики. Я узнал, что новую версию библиотеки Джексона можно найти в Fasterxml: Jackson, поэтому я добавил следующие зависимости к моему файлу maven pom:
<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>
Я немного смущен. Может кто-нибудь, пожалуйста, скажите мне, почему?
Ответы
Ответ 1
<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
Итак, 3 "quickxml" зависимостей, которые у вас уже есть в u'r pom, достаточно для ObjectMapper, так как он включает в себя джексон-databind.
Ответ 2
Нет, вы можете просто использовать com.fasterxml.jackson.databind.ObjectMapper
.
Скорее всего, вы забыли исправить свои import
-статы, удалить все ссылки на код и вы золотые.
Ответ 3
Имена пакетов в Jackson 2.x изменены на com.fasterxml
1 из org.codehaus
2. Поэтому, если вам просто нужен ObjectMapper, я думаю, что Jackson 1.X может удовлетворить ваши потребности.
Ответ 4
Помимо фиксации импорта, сделайте новый maven clean compile -U
. Обратите внимание на параметр -U
, который вносит новые зависимости, с которыми иногда приходится сталкиваться редактору. Пусть компиляция завершилась неудачей из-за не импортированных классов, но по крайней мере у вас есть возможность импортировать их после команды maven.
Просто делать Maven → Reimport от Intellij не помог мне.
Ответ 5
Я потратил несколько часов на это.
Даже если у меня была правильная зависимость, проблема была исправлена только после того, как я удалил папку com.fasterxml.jackson в репозитории .m2 под C:\Users\username.m2 и обновил проект