使用Gson实现parcelable接口

时间:2013-11-10 14:10:11

标签: android gson parcelable

我尝试使用Gson实现parcelable接口。我们的想法是创建一个json字符串(使用gson)并将其写入parcel对象。

这可能是实现界面的正确方法吗?

我遇到的唯一问题是当我反序列化对象时。实际上,我使用gson重新创建对象。

private MyClass(Parcel in) {
    String json = in.readString();
    Gson gson = new Gson();
    gson.fromJson(json, getClass());
}

问题是fromJson函数返回一个对象,该对象是构造函数应该创建的对象。 最后一行代码应该是

this=gson.fromJson(json, getClass());

那么,如果这是实现Parcelable的正确方法,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:3)

您应该仔细阅读Parcelable javadoc。它包含您需要的一切。

正如文档中引用的那样:

  

可以写入和恢复其实例的类的接口   来自一个包裹。实现Parcelable接口的类也必须   有一个名为CREATOR的静态字段,它是一个实现的对象   Parcelable.Creator界面。

因此,您应该声明writeToParcel方法,并使用将从包中生成类实例的创建者。

私有构造函数是一个额外的帮助程序,您可以使用它来设置给定宗地的对象字段的值,但不能设置对象本身。在Java中,this是正确的值,无法分配。

BTW,parcelisation的目标是提供短期快速序列化过程。一般来说,当您使用parcelisation时,您应该使用快速和紧凑的数据格式。 JSON不是首选的候选者,但它会起作用。