使用Jackson映射器的正确依赖集

Hos*_*ein 54 java json jackson

我是杰克逊的新手,我正在编写一些练习代码.我发现可以在Fasterxml:Jackson上找到新版本的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>
Run Code Online (Sandbox Code Playgroud)

我原以为我可以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>
Run Code Online (Sandbox Code Playgroud)

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

小智 39

<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>
Run Code Online (Sandbox Code Playgroud)

你有一个ObjectMapper(来自Jackson Databind包)方便.如果是这样,你可以这样做:

JsonFactory factory = objectMapper.getFactory();
Run Code Online (Sandbox Code Playgroud)

来源:https://github.com/FasterXML/jackson-core

所以,你已经拥有的3个"fastxml"依赖关系对于ObjectMapper来说已经足够了,因为它包含了jackson-databind.


spe*_*izt 7

不,你可以简单地使用com.fasterxml.jackson.databind.ObjectMapper.很可能你忘了修改你的import-statements,删除对codehaus的所有引用,你就是金色的.


che*_*rui 4

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