无法与杰克逊合作

2022-09-03 14:05:19

我想知道为什么没有一种确定的工作方式。我只想解析字符串:JacksonJSON

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


答案 1

使用这些依赖项 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本身(即软件包)的库...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>