Я делаю очень простой тест с Джексоном. У меня есть класс и используйте его объект как параметр и возвращаемое значение метода Джерси. Класс:Deserialize JSON to Java Object containg Коллекция с использованием Jackson
import java.util.List;
public class TestJsonArray {
private List<String> testString;
public List<String> getTestString() {
return testString;
}
public void setTestString(List<String> testString) {
this.testString = testString;
}
}
У меня есть метод Джерси, который пытается добавить одну строку в тестовом списке строку
@Path("/arrayObj")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Object createObjectArray(@QueryParam("param") String object) throws JsonGenerationException, JsonMappingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
TestJsonArray convertValue = objectMapper.convertValue(object, TestJsonArray.class);
convertValue.getTestString().add("hello");
return objectMapper.writeValueAsString(convertValue);
}
Когда я называю этот метод с параметром
{ "testString": ["Hi"]}
Получаю исключение:
java.lang.IllegalArgumentException: Can not construct instance of test.rest.TestJsonArray, problem: no suitable creator method found to deserialize from JSON String
at [Source: N/A; line: -1, column: -1]
Исключение выбрасывается в десериализации processs:
TestJsonArray convertValue = objectMapper.convertValue (объект, TestJsonArray.class);
Мне интересно, почему это исключение выбрасывается. Что я делаю не так?
Вы создали 'TestJsonArray' только для того, чтобы провести' ArrayList'? или он содержит другие поля? – sanbhat
Это всего лишь тестовая форма моего реального приложения. Мое настоящее приложение содержит также другие поля – pokeRex110