GSON反序列化捆绑

时间:2015-12-30 16:09:51

标签: android json gson parcelable

如何反序列化此JSON:

"data": {
    "key1": 11,
    "key2": {
        "key3": 22
        "key4": 83
        "key5": 99
    }
}

使用GSON库到Android Bundle?这不起作用:

class Model implements Parcelable {

    private int key1;
    private Bundle key2;

        [...]

    protected Model(Parcel in) {
        key1 = in.readInt();
        [...]
        key2 = in.readBundle();
    }

    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(key1);
        [...]
        dest.writeBundle(key2);
    }
}

我不想创建key2模型。

1 个答案:

答案 0 :(得分:0)

好的,我可以为你的问题写一个例子......

我相信你的密钥会改变,因为你在问题中提出的问题与你真正想要的不一样,所以我创建了一个Key类,你可以把它改成适当的类{{1}你需要得到的。

  

Key.java

Object
  

Data.java

import com.google.gson.annotations.SerializedName;

public class Key {

    @SerializedName("key")
    private String key;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }
}

您可以使用以下代码

进行测试
import java.util.ArrayList;

import com.google.gson.annotations.SerializedName;

public class Data {

    @SerializedName("someName")
    private String someKey;

    @SerializedName("Key")
    private Key key;

    @SerializedName("keys")
    private ArrayList<Key> keys;

    public String getSomeKey() {
        return someKey;
    }

    public void setSomeKey(String someKey) {
        this.someKey = someKey;
    }

    public Key getKey() {
        return key;
    }

    public void setKey(Key key) {
        this.key = key;
    }

    public ArrayList<Key> getKeys() {
        return keys;
    }

    public void setKeys(ArrayList<Key> keys) {
        this.keys = keys;
    }
}

这只是一个示例,其中public static void main(String[] args) { // TODO Auto-generated method stub Key key = new Key(); key.setKey("someNumber"); ArrayList<Key> keys = new ArrayList<>(); for (int i = 0; i < 5; i++) { Key key2 = new Key(); key2.setKey("1"+i); keys.add(key2); } Data data = new Data(); data.setKey(key); data.setKeys(keys); String result =(new Gson()).toJson(data); System.out.println(result); System.out.println("\n#######\n"); Data data2 = (new Gson()).fromJson(result, Data.class); System.out.println(data2.getKey().getKey()); } 类已在Data转换,而不是反序列化以填充它的对象,这可以让您了解如何阅读自己的对象数据

  

输出

JSON