68

我是杰克逊的新手,我正在编写一些练习代码。我发现新版本的 Jackson 库可以在 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>

我有点困惑。有人可以告诉我为什么会这样吗?

4

5 回答 5

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

因此,您在 pom 中已经拥有的 3 个“fasterxml”依赖项对于 ObjectMapper 来说已经足够了,因为它包括 jackson-databind。

于 2015-02-24T13:25:15.480 回答
11

不,您可以简单地使用com.fasterxml.jackson.databind.ObjectMapper. 很可能你忘了修复你的import-statements,删除所有对 codehaus 的引用,你就很成功了。

于 2014-10-07T14:41:09.350 回答
4

Jackson 2.x 中的包名称从2更改为com.fasterxml1。因此,如果您只需要 ObjectMapper,我认为 Jackson 1.X 可以满足您的需求。org.codehaus

于 2014-08-01T14:02:53.843 回答
2

我花了几个小时在这上面。

即使我有正确的依赖关系,只有在我删除 C:\Users\username.m2 下 .m2 存储库中的 com.fasterxml.jackson 文件夹并更新项目后,问题才得到解决

于 2016-11-05T12:04:53.010 回答
1

除了修复进口,做一个新鲜的maven clean compile -U. 请注意该-U选项,它会带来新的依赖项,有时编辑器很难处理。让编译由于未导入的类而失败,但至少您可以选择在 maven 命令之后导入它们。

只是从 Intellij 执行 Maven-> Reimport 对我不起作用。

于 2017-07-14T22:01:22.967 回答