Я пытаюсь использовать JSON, используя Джексона.
Класс, с которым я хочу связать свой json: -
KeyValueModel.class
public class KeyValueModel {
private String k1;
private String k2;
public String getK1() {
return k1;
}
public void setK1(String k1) {
this.k1 = k1;
}
public String getK2() {
return k2;
}
public void setK2(String k2) {
this.k2 = k2;
}
}
Я хочу сопоставить json напрямуюмой список моей модели, т. е. KeyValueModel
@Test
public void whenParsingJsonStringIntoList_thenCorrect() throws IOException {
String jsonList = "{
"count": 30,
"data": [
{
"k1": "v1",
"k2": "v2"
},
{
"k1": "no",
"k2": "yes"
}
]
}";
ObjectMapper mapper = new ObjectMapper();
JavaType listType = mapper.getTypeFactory().constructCollectionType(List.class, KeyValueModel.class);
List<KeyValueModel> l = mapper.readValue(jsonList, listType);
System.out.println(l.get(1).getK2());
assertNotNull(l);
}
Я получаю ошибку, которая говорит
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token
at [Source: (String)"{
"count": 30,
"data": [
{
"k1": "v1",
"k2": "v2"
},
{
"k1": "no",
"k2": "yes"
}
]
}";
как я могу десериализовать массив данных в список?