У меня есть массив JSON в форме:
[
[
1232324343,
"A",
"B",
3333,
"E"
],
[
12345424343,
"N",
"M",
3133,
"R"
]
]
Я хочу сопоставить каждый элемент родительского массива с POJO, используя библиотеку Джексона.Я попробовал это:
ABC abc = new ABC();
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(data).get("results");
if (jsonNode.isArray()) {
for (JsonNode node : jsonNode) {
String nodeContent = mapper.writeValueAsString(node);
abc = mapper.readValue(nodeContent,ABC.class);
System.out.println("Data: " + abc.getA());
}
}
, где ABC - это мой класс POJO, а abc - это объект, но я получаю следующее исключение:
com.fasterxml.jackson.databind.JsonMappingException:Не удается десериализовать экземпляр com.demo.json.model.ABC
РЕДАКТИРОВАТЬ: Мой POJO выглядит следующим образом:
class ABC{
long time;
String a;
String b;
int status;
String c;
}
Может кто-нибудь предложить решение для этого?
РЕДАКТИРОВАТЬ 2: просмотрев множество ответов на StackOverflow и других форумах, я нашел одно решение.Я отобразил возвращенное значение метода readValue () в массив объектов POJO.
ABC[] abc = mapper.readValue(nodeContent, ABC[].class);
Но теперь я получаю отдельное исключение
Невозможно создать экземпляр ABC:нет конструктора / метода длинных аргументов / метода фабрики для десериализации из числового значения (1552572583232)
Я пробовал следующее, но ничего не получалось: 1. Принудительное использование Джексоном целочисленных значений для длинных значений с использованием
mapper.configure(DeserializationFeature.USE_LONG_FOR_INTS, true);
2.Использование класса-оболочки Long вместо long в POJO
Может кто-нибудь помочь мне с этим?