无法使用Jackson工作

15

我想知道为什么没有一种确定的方法来使用 Jackson。我只想解析 JSON 字符串:

我想知道为什么没有一种确定的方法来使用 Jackson。我只想解析 JSON 字符串:

ObjectMapper mapper = new ObjectMapper();
Customer[] myObjects = mapper.readValue(file, Customer[].class);

但我真的不知道应该导入什么才能做到这一点。根据这个链接,我尝试导入 mapper-asl.jar。但是我得到了这个编译错误:

The type org.codehaus.jackson.JsonParser cannot be resolved. It is indirectly referenced from required .class files

然后我尝试导入jackson-core-2.4.2jackson-databind-2.4.2。所以编译没有错误,但我得到了这个运行时异常(在映射器定义行中):

java.lang.NoClassDefFoundError: com.fasterxml.jackson.annotation.JsonAutoDetect

请指导我应该导入哪些内容来使用Jackson。谢谢。


正如其他人指出的那样,您有一些版本混淆:org.codehaus.jackson 适用于 Jackson 1.x,而 com.fasterxml.jackson 适用于 2.x。而且,您所依赖的某些内容可能是基于 Jackson 1.x(可能是 1.9、Hadoop、DropWizard 或 Jersey 等)。 - StaxMan
没有问题已经解决。我只需要添加jackson-annotation库。谢谢。 - Misagh Emamverdi
好的,很高兴它得到了解决! - StaxMan
添加jackson-annotation后,我们需要导入任何类文件吗? - Sangram Anand
2个回答

15

使用以下依赖项:
jackson-databind
jackson-annotations
jackson-core

public class JsonTest {
    public static void main(String[] args) throws JsonProcessingException {
    ObjectMapper mapper=new ObjectMapper();
    Map<String,String> dt=new Hashtable();
    dt.put("1", "welcome");
    dt.put("2", "bye");
    String jsonString = mapper.writeValueAsString(dt)
    System.out.println(jsonString);
    }    
}

2
我添加了jackson-annotations之后它就正常工作了。谢谢。 - Misagh Emamverdi
1
谢谢,我刚刚将jackson-databind添加为Maven依赖项,我的项目现在可以工作了。干杯 - netto

4

看起来引用混乱。

你可能在使用一个使用Jackson自身的旧版本的库(即org.codehaus包)...

我通常只是通过Maven引用Jackson。

像这样:

<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>LATEST</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>LATEST</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>LATEST</version>
    </dependency>
</dependencies>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接