不能与杰克逊合作

时间:2014-09-20 09:18:56

标签: java android json jackson

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

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

但我真的很困惑应该导入什么来做到这一点。根据此link,我尝试导入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。所以没有编译错误,但我得到了这个运行时异常(在mapper定义行中):

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

指导我,我应该导入哪些内容与Jackson一起使用。感谢

2 个答案:

答案 0 :(得分:16)

使用这些依赖项 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);
    }    
}

答案 1 :(得分:4)

看起来像混合参考。

您可能正在使用使用旧版Jackson本身的库(即org.codehaus包)......

我通常只是通过Maven引用杰克逊。

类似的东西:

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