Не удается работать с Джексоном
Мне интересно, почему нет определенного способа работы с 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.2
и jackson-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
Похоже на замешанные ссылки.
Возможно, вы используете библиотеку, в которой используется старая версия самого Джексона (т.е. пакет 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>