对于我的应用程序,我有一个回收站视图,我正在使用LiveData进行填充。回收者视图中的每个项目都是我创建的一个Event对象。我正在使用Room和Dao存储这些事件并在SQL与存储库和UI控制器之间创建抽象层,但是问题是Dao只能将primitize类型序列化为JSON。我创建了类型转换器,以便在ArrayList和json之间进行转换,但是我需要能够在LiveData [ArrayList [Event]]之间进行转换,以使其工作。
到目前为止,这就是我所拥有的:
@TypeConverter
public static String fromEvent(LiveData<ArrayList<Event>> events){
Gson gson = new Gson();
String json = gson.toJson(events);
return json;
}
@TypeConverter
public static LiveData<ArrayList<Event>> fromEventString (String value){
Type eventType = new TypeToken<LiveData<ArrayList<Event>>>() {}.getType();
return new Gson().fromJson(value, eventType);
}
如何使用Google的Gson库在这两种数据类型之间进行转换?大声笑我显然对此不太有经验。
感谢您的帮助!
答案 0 :(得分:0)
这不是一个确切的答案,但是我从ArrayList切换到了通用List,并且可以无缝运行。我正在阅读有关Gson如何看待您用来学习如何序列化和反序列化的任何数据结构的超类的内容,所以我想知道是否切换到: List [Event] list = new ArrayList() >代替 ArrayList [Event] list = new ArrayList()可以解决问题。确实,由于某种原因,RoomDatabase非常了解如何以这种方式对其进行序列化。