Android開發中相當便捷的JSON反序列化實現(含源代碼) 連帶有handler和進度條功能

  在開發的應用程序的過程中,我相信json是使用最多的輕量級的數據交換格式,這裡我就不介紹有關json的概念瞭。主要說明一下有關json反序列化的問題,一般情況下我們解析json都是下邊這種方式:
[java] 
try { 
    jObj = new JSONObject(resultString); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

resultString是json類型的字符串,當轉化為JSONObject類之後,我們還需要一個一個的去解析數據,
[java] 
int status =jObj.getInt("Status"); 
String msgString = jObj.getString("Msg"); 
你是不是會感覺到這樣很麻煩呢,特別是對於用的比較多的值得時候。谷歌也發現瞭這個問題,他們開發出瞭一個json反序列化包。我們可以將返回的鍵值格式轉化為類的格式,這個時候當我們再次使用的時候,就是類名.屬性名就可以獲取該變量的值瞭。我在這裡摘取幾行關鍵的代碼,
[java] 
//httpget請求返回結果 
    String str = Common.requestApi("此處填寫URL地址 "); 
    System.out.println("str" + str); 
    //json反序列化函數 
    MagazineCategoryResp magazineCatagoryList = gson.fromJson(str, MagazineCategoryResp.class); 
    Message message = new Message(); 
    message.what = 1; 
    //把類賦值給message 
    message.obj = magazineCatagoryList; 
    //發送handler信息  在handler裡面進行接收 
    handler.sendMessage(message); 

就這樣就可以實現json反序列化瞭,這是在handler裡面進行處理的,一般情況下我們都是通過網絡獲取json格式的數據的。反序列化之後我們就可以在handler裡面接受該類,然後就可以非常方便的使用變量值瞭。因為URL是公司的,所以我註釋掉瞭,返回值的類型在源代碼裡我把打印出來信息放到瞭註釋裡,這次得到的編碼格式不是UTF-8的,大傢湊合著看吧。
handler裡面處理數據代碼
[java] 
Handler handler = new Handler(){ 
    @Override 
    public void handleMessage(Message msg) { 
        switch (msg.what) { 
        case 1: 
            //反序列化結果在handler裡使用 
            MagazineCategoryResp magazineCatagoryList = (MagazineCategoryResp) msg.obj; 
            //這裡打印查看結果  可以以類的方式獲取json值 
            System.out.println("Result=" + magazineCatagoryList.data.get(0).name); 
            tvTest.setText(magazineCatagoryList.data.get(0).name); 
            break; 
        } 
        super.handleMessage(msg); 
    } 
}; 

結果隻是測試用的,所以直接使用瞭get(0)
    這裡也使用瞭handler機制,還有進度條的使用,如果有不懂得可以去論壇裡找相關的教程和例子。CSDN上也有很多大牛的博客裡也有提及。

You May Also Like