天天看點

Android使用JSONObject和GSON方法解析JSON格式資料

在網絡上傳輸資料時最常用的兩種格式有:XML和JSON。其中JSON格式資料解析有JSONObject,GSON等方法。

假設在伺服器上存在一個get_data.json檔案,檔案内容為:

[{"id":"5","version":"5.5","name":"clash of clans"},
{"id":"6","version":"7.0","name":"boom beach"},
{"id":"7","version":"3.5","name":"clash royale"}]
           

假設已經使用OkHttp向伺服器請求該檔案,并将結果儲存在jsonData字元串裡。

1.JSONObject解析

JSONObject是官方提供的解析方法,具體代碼如下:

private void parseJSONWithJSONObject(String jsonData){
        try{
            JSONArray jsonArray = new JSONArray(jsonData);//定義一個JSON數組,并将資料傳到數組裡面
            for(int i = 0;i < jsonArray.length();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);//建立JSONObject對象并将數組内的資料傳入對象中
                String id = jsonObject.getString("id");
                String name = jsonObject.getString("name");
                String version = jsonObject.getString("version");
                Log.d("MainAcvitity","id is " + id);
                Log.d("MainAcvitity","name is " + name);
                Log.d("MainAcvitity","version is " + version);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
           

上述代碼很簡單,首先定義了一個jsonArray數組,并将從伺服器上擷取的資料傳入數組當中,此時jsonArray數組的每個數組單元都是一個JSONObject對象,每個JSONObject對象都包含id、name、version等資料。然後建立一個JSONObject變量引用該數組上的每個JSONObject對象,并通過JSONObject對象的getString()方法将資料儲存到字元串當中即可。

2.GSON解析

使用GSON需要先添加GSON庫的依賴,在app/build.gradle檔案的dependences閉包中添加一句:

compile'com.google.code.gson:gson:2.7'
           

GSON的神奇之處在于它能夠将一段JSON格式的字元串映射成一個對象,然後從該對象中取出資料即可。步驟如下:

(1)首先需要定義一個app類,代碼如下:

public class App {
    private String id;

    private String name;

    private String version;

    public String getId(){
        return id;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getName(){
        return  name;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getVersion(){
        return version;
    }

    public void setVersion(String version){
        this.version = version;
    }
}
           

app類中有id、name、version三個成員變量,還有指派和擷取該三個變量的方法。

(2)定義完app類之後就可以使用它了,代碼如下:

private void parseJSONWithGSON(String jsonData){
        Gson gson = new Gson();//建立GSON執行個體
        List<App> appList = gson.fromJson(jsonData,new TypeToken<List<App>>(){}.getType());//傳入資料開始解析
        for (App app : appList){
            Log.d("MainAcvitity","id is " + app.getId());
            Log.d("MainAcvitity","name is " + app.getName());
            Log.d("MainAcvitity","version is " + app.getVersion());
        }
    }
           

首先建立一個GSON執行個體,然後調用執行個體的fromJson()方法,方法有兩個參數,一個是待解析的資料,一個是期望解析成的資料類型,這裡是一個app對象清單,将解析之後的資料指派給一個app對象清單變量:appList,最後從appList中取出資料即可。

繼續閱讀