Android中使用JsonObject实现Parcelable功能

3
为了初始化我的新片段,我需要发送一个可包裹的对象。它包含以下字段:
private String sessionId;
private String status;
private JSONObject typeAttributes;
private JSONObject kindAttributes;

问题在于 JSONObject 不是可传递的。如果我仅在 writeToParcel 方法中使用 writeValue 方法,则会收到不可接受的类错误。 此外,JSONObject 甚至也不可序列化。
而且,typeAttributes 和 kindAttributes 是动态的,因此每次启动应用程序时它们都有不同的字段和不同的值。
如果有人知道如何解决这个问题,请帮忙。
2个回答

11

我会使用 JSONObjecttoString() 方法返回一个 String,您可以轻松地将其保存到包裹中。

然后,要从打包的 String 创建对象,只需使用 JSONObject构造函数来获取 String 并自动填充该对象的字段。


非常感谢,我不知道 JsonObject 可以轻松转换为 String,反之亦然。 - Rustam Ibragimov
请记住,频繁执行此操作可能会导致性能下降。Parcelable 的存在是因为序列化对于常规 UI/OS 级别的数据传递来说太慢了。 - Gibolt

1
我会选择这种方法。
1- 创建一个实现序列化的Pojo类
2- 构建该类的对象
3- 将该对象作为可序列化对象发送

public class POJO implements Serializable{
    private String sessionId;
    private String status;
   // private JSONObject typeAttributes;
    // SUPPOSE THIS JSONObject CONTAINS TWO FIELDS AS NAME AND AGE SO I USE TWO MORE FILDS
    String name;
    String age;

    //....... WRITE GETTERS AND SETTERS

}

如果您需要进一步说明如何在活动中构建此POJO对象并将其作为可序列化对象发送,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接