如何反序列化此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模型。
答案 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