Gson десериализует вложенные объекты с InstanceCreator
У меня есть класс с именемPageItem
, который имеет конструктор, который принимаетContext
в качестве параметра:
PageItem(Context context)
{
super(context);
this.context = context;
}
PageItem
имеет эти свойства:
private int id;
private String Title;
private String Description;
public Newsprovider newsprovider;
public Topic topic;
Newsprovider
а такжеTopic
другие классы моего приложения и имеют следующие конструкторы:
Newsprovider (Context context)
{
super(context);
this.context = context;
}
Topic (Context context)
{
super(context);
this.context = context;
}
PageItem
, Newsprovider
а такжеTopic
подклассыSQLiteOpenHelper
.
Я хочу десериализоватьPageItem
массив с Gson, поэтому я написал:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(PageItem.class, new PageItemInstanceCreator(contex,t));
Gson gson = gsonBuilder.create();
Pageitem pis[] = gson.fromJson(s, PageItem[].class);
с участиемPageItemInstanceCreator
определяется как:
public class PageItemInstanceCreator implements InstanceCreator<PageItem>
{
private Context context;
public PageItemInstanceCreator(Context context)
{
this.context = context;
}
@Override
public PageItem createInstance(Type type)
{
PageItem pi = new PageItem(context);
return pi;
}
}
При отладкеPageItem
экземпляр имеет правильно "MainActivity" в качестве контекста, но егоnewsprovider
переменная-член имеет контекст = ноль.
Gson созданPageItem
объект, используя правильный конструктор, но он создалNewsprovider
экземпляр с использованием конструктора по умолчанию без параметров. Как я могу это исправить?