Десериализация массива дескрипторов объектов 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 и преобразует его непосредственно в список; все еще отлично работает, выводя список элементов.