Я получаю следующее исключение.
Caused by: java.lang.ClassCastException: Cannot cast java.util.LinkedList to com.example.weltliste.Task
в этой строке: tasks.add(g.fromJson(in, Task.class));
Вот полный метод + мой пользовательский десериализатор
public class FileHandler {
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
Gson g = new GsonBuilder().setPrettyPrinting()
.registerTypeAdapter(Task.class, new TaskSerializer())
.registerTypeAdapter(Task.class, new TaskDeserializer()).create();
public List<Task> read(InputStream stream) throws IOException {
InputStreamReader in = new InputStreamReader(stream);
List<Task> tasks = null;
tasks.add(g.fromJson(in, Task.class));
return tasks;
}
Вот мой пользовательский десериализатор
public class TaskDeserializer implements JsonDeserializer<List<Task>> {
@Override
public List<Task> deserialize(JsonElement json,
Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
List<Task> tasks = new LinkedList<>();
JsonArray jsonArray = json.getAsJsonArray();
for (int i = 0; i < jsonArray.size(); i++) {
JsonObject jsonObject;
jsonObject = jsonArray.get(i).getAsJsonObject();
String title = jsonObject.get("title").getAsString();
String value = jsonObject.get("value").getAsString();
LocalDateTime date = LocalDateTime.parse(jsonObject.get("date").getAsString());
boolean checked = jsonObject.get("checked").getAsBoolean();
tasks.add(new Task(title, value, date, checked));
}
return tasks;
}
}