最近在學習過程中使用到了使用Gson解析Json資料,解析過程中我們遇到的最大問題就是JavaBean的建立,一旦建立好了JavaBean,後面擷取資料的過程也就事半功倍了。
下面是我在學習使用該方法的思路:1 首先看這段較為簡單的Json資料:
{
"a":"10",
"b":[{"b1":"1","b2":"2"},{"b1":"3","b2":"4"} ],
"c":{"c1":"10","c2":"20"}}
我們知道,當我們使用jsonObject和JsonArray解析Json資料時"a":"10" 我們可以直接擷取;[ ]我們可以當成JsonArray數組;{ }我們可以當成jsonObject對象,在Gson中建立JavaBean時是同樣的思路
以下建立相對應的javaBean :
public class Data{
public String a;
public List<B> b;
public C c;
public static class B{
public String b1;
public String b2;
}
public static class C{
public String c1;
public String c2;
}
}
這裡的變量名,對象名,都必須和你的Json資料裡面的鍵保持一緻,
Gson gson = new Gson();
Type type = new TypeToken<Data>(){}.getType();
Data data = gson.fromJson(result, type);
然後資料都在data裡面了,取出來就可以了。
2 若碰到以下的Json資料:
{"users":
{
"code":"1001",
"name":"JOHN",
"kb":[
{"detail":{"t1":"SQL","t2":"C語言","t3":"","t4":""},"weekday":"星期一"},
{"detail":{"t1":"Java","t2":"J2EE","t3":"C","t4":""},"weekday":"星期二"},
{"detail":{"t1":"AA","t2":"BB","t3":"DD","t4":""},"weekday":"星期三"},
{"detail":{"t1":"AA","t2":"","t3":"","t4":""},"weekday":"星期四"},
{"detail":{"t1":"","t2":"BB","t3":"","t4":"EE"},"weekday":"星期五"}
]
}
}
思路也大緻一樣,在使用内部類嵌套時,一定要給該内部類加上static
相對應的javaBean :
public class Data {
public Users users;
public static class Users{
public String code;
public String name;
public List<KB> kb;
public static class KB{
public Detail detail;
public String weekday;
public static class Detail{
public String t1;
public String t2;
public String t3;
public String t4;
@Override
public String toString() {
return "Detail [t1=" + t1 + ", t2=" + t2 + ", t3=" + t3
+ ", t4=" + t4 + "]";
}
}
}
}
}
調用以下代碼:
Gson gson = new Gson();
Type type = new TypeToken<Data>(){}.getType();
Data data = gson.fromJson(result, type);
Users users = data.users;
String code = users.code;
String name = users.name;
Log.i("MainActivity", "code:" + code + ";name: " + name);
List<KB> kb = users.kb;
for (KB k: kb) {
String weekday = k.weekday;
Log.i("MainActivity", "weekday: "+ weekday);
Detail detail = k.detail;
Log.i("MainActivity", detail.toString());
}
這樣就能擷取到我們想要 的資料了,我這裡隻是兩個複雜一點點的資料,還有更為複雜的思想大緻也跟這個一樣。在下面的檔案中,我把相應的Gson架構傳上去了,使用時需要導入gson-2.3.1.jar這個jar包,關聯源碼請看我的上篇文章