Android 开发必看Gson解析json案例

如果你需要下载Gson(在Android studio中不需要下载加载添加即可)请到

http://download.csdn.net/detail/qq_30034925/9813069

中下载,或者在本文末端连接的源码中有。
Gson作为谷歌的亲儿子使用的还是比较广泛,下面将会完成一个利用Gson解析json的案例,因为做为测试用的,所以不做Android studio例子,而是在Eclipse中完成。但是代码是通用的。
案例概述:一个查询快递的源码
如果需要了解Gson的详细内容请看

http://blog.csdn.net/qq_30034925/article/details/70162308

json的内容

{
    "message": "ok",
    "nu": "612879710880",
    "ischeck": "1",
    "condition": "F00",
    "com": "shunfeng",
    "status": "200",
    "state": "3",
    "data": [
        {
            "time": "2017-03-14 12:48:19",
            "ftime": "2017-03-14 12:48:19",
            "context": "已签收,感谢使用顺丰,期待再次为您服务",
            "location": "null"
        },
        {
            "time": "2017-03-14 08:37:09",
            "ftime": "2017-03-14 08:37:09",
            "context": "快件交给杨玉麟,正在派送途中(联系电话:15920977099)",
            "location": "null"
        },
        {
            "time": "2017-03-14 07:54:49",
            "ftime": "2017-03-14 07:54:49",
            "context": "正在派送途中,请您准备签收(派件人:苏镜昌,电话:13924282546)",
            "location": "null"
        },
        {
            "time": "2017-03-14 07:26:34",
            "ftime": "2017-03-14 07:26:34",
            "context": "快件到达 【广州花都红棉大道营业部】",
            "location": "【广州花都红棉大道营业部】"
        },
        {
            "time": "2017-03-14 00:24:58",
            "ftime": "2017-03-14 00:24:58",
            "context": "快件在【广州新塘集散中心】已装车,准备发往 【广州花都红棉大道营业部】",
            "location": "【广州花都红棉大道营业部】"
        },
        {
            "time": "2017-03-13 20:21:24",
            "ftime": "2017-03-13 20:21:24",
            "context": "快件到达 【广州新塘集散中心】",
            "location": "null"
        },
        {
            "time": "2017-03-13 18:59:03",
            "ftime": "2017-03-13 18:59:03",
            "context": "快件在【广州天河广利路营业部】已装车,准备发往 【广州新塘集散中心】",
            "location": "【广州天河广利路营业部】"
        },
        {
            "time": "2017-03-13 18:01:07",
            "ftime": "2017-03-13 18:01:07",
            "context": "顺丰速运 已收取快件",
            "location": "null"
        }
    ]
}

我们需要实体类bean。但是创建起来很多,安利一个网站http://www.bejson.com/json2javapojo/new/
这里面可以是json直接生成bean,这样还可以保证不会输错名字,同时该网站还可以在线把json格式化
过程:打开http://www.bejson.com/json2javapojo/new/

这里写图片描述

在文本框中输入json内容。点击生成JavaBean即可,然后点击下载代码。
生成的类

这里写图片描述

JsonRootBean.class

public class JsonRootBean {

    private String message;
    private String nu;
    private String ischeck;
    private String condition;
    private String com;
    private String status;
    private String state;
    private List<Data> data;
    public void setMessage(String message) {
         this.message = message;
     }
     @Override
    public String toString() {
        return "JsonRootBean [message=" + message + ", nu=" + nu + ", ischeck=" + ischeck + ", condition=" + condition
                + ", com=" + com + ", status=" + status + ", state=" + state + "]";
    }
    public String getMessage() {
         return message;
     }

    public void setNu(String nu) {
         this.nu = nu;
     }
     public String getNu() {
         return nu;
     }

    public void setIscheck(String ischeck) {
         this.ischeck = ischeck;
     }
     public String getIscheck() {
         return ischeck;
     }

    public void setCondition(String condition) {
         this.condition = condition;
     }
     public String getCondition() {
         return condition;
     }

    public void setCom(String com) {
         this.com = com;
     }
     public String getCom() {
         return com;
     }

    public void setStatus(String status) {
         this.status = status;
     }
     public String getStatus() {
         return status;
     }

    public void setState(String state) {
         this.state = state;
     }
     public String getState() {
         return state;
     }

    public void setData(List<Data> data) {
         this.data = data;
     }
     public List<Data> getData() {
         return data;
     }

}

Data.class

public class Data {

    private String time;
    private String ftime;
    private String context;
    private String location;
    public void setTime(String time) {
         this.time = time;
     }
     public String getTime() {
         return time;
     }

    @Override
    public String toString() {
        return "Data [time=" + time + ", ftime=" + ftime + ", context=" + context + ", location=" + location + "]";
    }
    public void setFtime(String ftime) {
         this.ftime = ftime;
     }
     public String getFtime() {
         return ftime;
     }

    public void setContext(String context) {
         this.context = context;
     }
     public String getContext() {
         return context;
     }

    public void setLocation(String location) {
         this.location = location;
     }
     public String getLocation() {
         return location;
     }

}

GsonTest.class

public class GsonTest {
    //访问网络 ,返回的是一个json内容
    public static String downloadWeb(String url) // 截取的网页所有内�?
    {
        String result = ""; // 定义�?个字符串用来存储网页内容
        BufferedReader in = null; // 定义�?个缓冲字符输入流
        InputStream is = null;
        try {
            URL realUrl = new URL(url);
            // 初始化一个链接到那个url的连�?
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            // 设置请求方法
            connection.setDoInput(true); // 允许输入流,即允许下载
            connection.setDoOutput(true); // 允许输出流,即允许上传
            connection.setUseCaches(true); // 不使用缓冲
            connection.setRequestMethod("GET"); // 使用get请求
            // 获取输入流
            is = connection.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            in = new BufferedReader(isr);
            // 用来临时存储抓取到的每一行的数据
            String line;
            while ((line = in.readLine()) != null) {
                // 遍历抓取到的每一行并将其存储到result里面
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发�?�GET请求出现异常�?" + e);
            e.printStackTrace();
        } finally { // 使用finally来关闭输入流
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        try {
            result = new String(result.getBytes(), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return result;
    }
    public static void main(String[] args) {
        //http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号 
        //ps:快递公司编码:申通="shentong" EMS="ems" 顺丰="shunfeng" 圆通="yuantong" 中通="zhongtong" 韵达="yunda" 天天="tiantian" 汇通="huitongkuaidi" 全峰="quanfengkuaidi" 德邦="debangwuliu" 宅急送="zhaijisong"
        String result = downloadWeb("http://www.kuaidi100.com/query?type=ems&postid=9890533739217");
        Gson gson = new Gson();
        JsonRootBean bean = gson.fromJson(result, JsonRootBean.class);
        System.out.println(bean.toString());
        List<Data>datas = bean.getData();
        for(Data data:datas){
            System.out.println("快递状态"+data.getContext());
        }
    }

}

运行结果
这里写图片描述

最后源码下载地址
http://download.csdn.net/download/qq_30034925/9813438

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值