Как я могу получить данные из файла 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

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

0
0
134
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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() + "");
    }

model class

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;
    }
}

РЕЗУЛЬТАТ

У меня новый вопрос. Теперь я могу разобрать String на Object, если я определю String в классе Java. Но когда я читаю данные из файла, я получаю JsonParseExecption. Я подтвердил, что файл читается правильно. Но это просто не работает.

Touki Liu 04.04.2018 13:23

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