我对JSON的概念完全不熟悉,并且无法弄清楚如何使用Gson反序列化多级JSON语句。
这就是我要反序列化的内容:{"stat":"ok","pkey":{"id":"1234567890"}}
首先我尝试使用hashmap:
HashMap<String, Object> results = gson.fromJson(response, HashMap.class);
结果看起来足够合理,但是hashmap中的第二个条目(包含实际id号的那个)是gson.internal.LinkedTreeMap,我无法访问。
接下来我尝试创建一个自定义类来反序列化它,但我似乎无法让它正常工作......
这些都没有奏效:
class Results
{
String stat;
String[][] pkey;
}
class Results
{
String stat;
String[] pkey;
}
我在网上找到的唯一例子就是反序列化简单的单级JSON,看起来很简单。我似乎无法弄清楚这一点。
答案 0 :(得分:0)
使用JSONObject可以轻松反序列化多级JSON 这是您的示例
中的Log“ok”和“1234567890”String json = "{\"stat\":\"ok\",\"pkey\":{\"id\":\"1234567890\"}}";
try {
JSONObject jsonObj = new JSONObject(json);
Log.i("chauster", jsonObj.getString("stat"));
Log.i("chauster", jsonObj.getJSONObject("pkey").getString("id"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是gson的代码,你需要自定义你的类
public class Custom {
private String stat;
private IdClass pkey;
public String getStat() {
return stat;
}
public IdClass getPkey() {
return pkey;
}
public Custom(String _stat, IdClass _pkey) {
stat = _stat;
pkey = _pkey;
}
public class IdClass {
private String id;
public String getId() {
return id;
}
public IdClass(String _id){
id = _id;
}
}
}
String json = "{\"stat\":\"ok\",\"pkey\":{\"id\":\"1234567890\"}}";
Gson gson = new Gson();
Custom custom = gson.fromJson(json, Custom.class);
System.out.println(custom.getStat());
System.out.println(custom.getPkey().getId());