我想知道为什么没有确定的方法可以使用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.2
和jackson-databind-2.4.2
。所以没有编译错误,但我得到了这个运行时异常(在mapper定义行中):
java.lang.NoClassDefFoundError: com.fasterxml.jackson.annotation.JsonAutoDetect
指导我,我应该导入哪些内容与Jackson
一起使用。感谢
答案 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>