Я сослался на несколько вопросов по SO, например, google gson fromjson () TypeToken и Gson TypeToken с динамическим типом элемента ArrayList , но не смог найти решение для точного варианта использования.
Моя иерархия объектов выглядит следующим образом:
class A
{
List<? extends Parent> files;
A(List<? extends Parent> files){
this.files = files;
}
}
class B extends A
{
B(List<Child> files){
super(files);
}
}
Interface Parent{}
class Child implements Parent{
}
И мой код tojson:
A data = new B(files);
try(Writer writer = new FileWriter(outputFile))
{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.toJson(data,writer);
writer.flush();
}
При установке отладчика я обнаружил, что переменная данных заполнена, ноВыходной файл содержит пустой список.
В приведенных выше сообщениях я рассмотрел возможное решение, а именно:
Type listType = new TypeToken<ArrayList<YourClass>>(){}.getType();
, но проблема в моем случае заключается в том, что у меня естьэтот тип вложен в другой класс, т. е. B в указанном выше случае.Есть ли способ создать вложенный тип с помощью TypeToken?