当前位置:编程学习 > JS >>

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上也有很多大牛的博客里也有提及。

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,