Десериализация массива дескрипторов объектов android jackson json
Мне нужна помощь, анализирующая ответ с картографом jackson на POJO. У меня это как ответ:
"data": [{
"item": {
"downloaded": false,
"moderated": false,
"add": false
}
},
{
"item": {
"downloaded": false,
"moderated": false,
"add": false }
// more
так как я могу связать это с преобразователем POJO?
вот мой класс, который я пытаюсь, но он возвращает, что "элемент" не распознается и не может быть проигнорирован.
public ArrayList<Item> data = new ArrayList<Item>();
где item является общедоступным статическим классом. Элемент с конструкторами и всеми полями выше с геттерами и сеттерами.
как это сделать. Кажется, я не знаю, как читать данные из массива таким образом.
Ответы
Ответ 1
В вашем примере отсутствует несколько частей (например, определение элемента), чтобы узнать, совместима ли ваша структура; но в целом структуры JSON и Object должны соответствовать. Итак, вам понадобится хотя бы что-то вроде:
public class DataWrapper {
public List<Item> data; // or if you prefer, setters+getters
}
и если это так, вы должны связываться с:
DataWrapper wrapper = mapper.readValue(json, DataWrapper.class);
и получить доступ к данным как
List<Item> items = wrapper.data;
Ответ 2
JsonNode jsonNode = mapper.readValue(s, JsonNode.class);
JsonNode userCards = jsonNode.path("data");
List<Item> list = mapper.readValue(userCards.toString(), new TypeReference<List<Item>>(){});
Ответ 3
Здесь мой вариант кода мазиар.
List<Item> list = mapper.readValue( s, new TypeReference<List<Item>>(){} );
Он просто исключает преобразование сначала в JsonNode и преобразует его непосредственно в список; все еще отлично работает, выводя список элементов.