天天看點

使用Gson解析Json資料安卓導入源碼

最近在學習過程中使用到了使用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包,關聯源碼請看我的上篇文章

安卓導入源碼