使 JSONObject 可打包

Raf*_*afa 0 android json parcelable

我有一个 JSON 对象的数组列表,我试图像这样传递。

ArrayList<JSONObject> entryCities = new ArrayList<>();

for(int i = 0; i < entries.length(); i++){

    entryCities.add(entries.getJSONObject(i));

}

Intent intent = new Intent(UnitedStatesActivity.this, StateActivity.class);
intent.putExtra("object", entryCities);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,我需要使我的数组或数组中的 JSON 对象可分割。我开始查看文档并提出了我想要传递的这个类ArrayList<JSONObject>,但我不确定应该在我的writeToParcel()方法中添加什么。

我是否写出了我想要提取的 JSON 对象的具体值?即 out.object.getString("string")然后将我的可包裹对象传递到下一个活动?我只是不确定在使 JSON 对象可打包的上下​​文中该方法的内容应该是什么。

公共类 StateParcelable 扩展 JSONObject 实现 Parcelable {

ArrayList<JSONObject> list;


public StateParcelable(ArrayList<JSONObject> list){
    this. list = list;
}

public void writeToParcel(Parcel out, int flags) {

}

public int describeContents(){
    return 0;
}

public static final Parcelable.Creator<StateParcelable> CREATOR
        = new Parcelable.Creator<StateParcelable>() {
    public StateParcelable createFromParcel(Parcel in) {
        return new StateParcelable(in);
    }

    public StateParcelable[] newArray(int size) {
        return new StateParcelable[size];
    }
};

private StateParcelable(Parcel in) {

}
Run Code Online (Sandbox Code Playgroud)

Cru*_*ceo 5

既然您已经拥有(看起来是)JSONObjects 的 JSONArray,为什么不将其转换为字符串,传递它,并从中重建 JSONArray 呢?

Intent intent = new Intent(UnitedStatesActivity.this, StateActivity.class);
intent.putExtra("object", entries.toString());
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

然后在以下 Activity 中:

JSONArray entries = new JSONArray(getIntent().getStringExtra("object"));
Run Code Online (Sandbox Code Playgroud)

否则,是的,您必须循环遍历并序列化 ArrayList 中的各个项目,然后重建并将它们添加到列表中。

另外,附带说明一下,您可以以相同的方式传递各个 JSONObject:分别是 viatoString()new JSONObject(getIntent().getStringExtra("object"))