Android 使用Gson实现可包裹接口

Android 使用Gson实现可包裹接口,android,gson,parcelable,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()); } 问题是f

我正在尝试使用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
的正确方法,我该如何解决这个问题呢?

您应该更仔细地阅读。它包含你需要的一切

如文件所述:

用于实例可以写入和还原的类的接口 从一个包裹里。实现Parcelable接口的类也必须 有一个名为CREATOR的静态字段,它是一个实现 Parcelable.Creator界面

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

私有构造函数是一个附加的帮助器,您可以使用它设置给定地块的对象的字段值,而不是对象本身。在Java中,
这是一个正确的值,不能赋值


顺便说一句,打包的目标是提供一个短期的快速序列化过程。一般来说,在使用分组时,您应该使用快速紧凑的数据格式。JSON不是首选,但它会起作用。

好的,谢谢。我已经知道如何实现Parcelable。我只是想知道使用json表示法实现它是否好,因为使用gson实现它会更快。为什么“json不是一个可供选择的候选者”?你说它应该快速紧凑,JSON是紧凑的,在正常情况下应该足够快。我喜欢使用Json来实现这一点。@CorayThan,二进制格式压缩得更多,压缩/解压缩速度通常比解析字符串要快。