Как я могу получить некоторые данные из файла JSON с ArrayDeque?

Я пытаюсь получить некоторые данные из файла JSON, как это.

[
  {
    "type": "text",
    "content": "test test test",
    "time": 100
  },
  {
    "type": "text",
    "content": "abcedfg",
    "time": 100
  },
  {
    "type": "text",
    "content": "some data",
    "time": 100
  },
  {
    "type": "text",
    "content": "1234567",
    "time": 100
  }
]

И определил такой класс.

class TextData {
    String type;
    String content;
    long time;

    TextData(String type, String content, long time) {
        this.type = type;
        this.content = content;
        this.time = time;
    }
}

Я пытался использовать GSON для анализа данных JSON как ArrayDeque<TextData> как это

    ArrayDeque<TextData> textDatas = 
            new Gson().fromJson(getJson(fileName), ArrayDeque.class);

метод getJson получит данные файла json String,

И это не работает. Я получаю эту ошибку.

failed to deserialize json object "" given the type class java.util.ArrayDeque

Как я могу это исправить?

1 ответ

Решение

Попробуй это

    Gson gson = new Gson();
    Type listType = new TypeToken<List<TextData>>() {
    }.getType();
    List<TextData> arralist = (List<TextData>) gson.fromJson(response, listType);

    for (int i = 0; i < arralist.size(); i++) {
        Log.e("Content", arralist.get(i).getContent());
        Log.e("type", arralist.get(i).getType());
        Log.e("time", arralist.get(i).getTime() + "");
    }

модельный класс

public class TextData {
    String type;
    String content;
    long time;

    public TextData(String type, String content, long time) {

        this.type = type;
        this.content = content;
        this.time = time;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }
}

РЕЗУЛЬТАТ

введите описание изображения здесь

Другие вопросы по тегам