Android 开发必看Gson解析json案例

    xiaoxiao2021-04-14  40

    如果你需要下载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

    转载请注明原文地址: https://ju.6miu.com/read-670674.html

    最新回复(0)