【问题标题】:Android Parcelable with JsonObjectAndroid Parcelable 与 JsonObject
【发布时间】:2016-05-08 11:04:27
【问题描述】:

为了初始化我的新片段,我需要发送一个对象作为可打包对象。 这些是它包含的字段:

private String sessionId;
private String status;
private JSONObject typeAttributes;
private JSONObject kindAttributes;

问题在于 JSONObject 不可打包。如果我只在 writeToParcel 方法中使用 writeValue 方法,我会得到不可接受的类错误。 此外,JSONObject 甚至不是可序列化的。

另外,typeAttributes 和 kindAttributes 是动态的,所以每次我的应用启动时,它们都有不同的字段和不同的值。

如果有人知道如何解决,请帮忙。

【问题讨论】:

    标签: android serialization parcelable


    【解决方案1】:

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

    然后要从打包的String 创建对象,只需使用带有String 的JSONObject constructor,它会自动为您填充这些对象的字段。

    【讨论】:

    • 非常感谢,我不知道JsonObject可以很容易地转换为String,反之亦然
    • 请记住,经常这样做会导致性能下降。 Parcelable 存在是因为序列化对于常规 UI/OS 级别的数据传递来说太慢了
    【解决方案2】:

    我会采用这种方法。

    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 对象,然后将其作为可序列化发送给我,请告诉我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多