安卓学习之解析json数据

文章目录

    • 安卓学习之解析json数据
  • 前言
  • 一、Json数据
  • 二、使用原始的JsonObject来解析
    • 1.请求数据
    • 2.解析数据
      • 2.1JsonObject解析数据
      • 2.2GSON解析数据
  • 总结

前言

记录安卓开发的每一天,这个说明一下,写的博客虽然访问量没多少吧,但也希望找些朋友一块学习,为此,我创建了一个学习群874308732有兴趣的小伙伴可以加一下哈,我们一块学习,一起交流。


一、Json数据

现在网络传输数据大多是xml类型和json类型,但我查阅一些资料呢,json数据目前已经几乎是占据主流了吧,当然xml文件的解析呢,有时间也是可以学习一下的,基础嘛,对吧。ok,废话不多说,开始正题!

二、使用原始的JsonObject来解析

1.请求数据

解析数据呢,我们首先得获取数据是吧,这里顺便复习一下网络部分的知识

代码如下(示例):
布局的话呢,我们就简单建立一个button,点击就发起网络请求,获取数据就行了
上码!

 Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {sendRequestWithOkHttp();}private void sendRequestWithOkHttp() {//获取网络请求是需要耗时的,所以我们不能在主线程执行new Thread(new Runnable() {@Overridepublic void run() {try {//注入依赖,使用第三方库实例化一个ClientOkHttpClient okHttpClient = new OkHttpClient();//建立一个请求,这个请求使用构造器并且采用链式编程法则添加需要的操作Request request = new Request.Builder().url("http://10.0.2.2/get_data.json").build();//接着就是将这个请求执行Response response = okHttpClient.newCall(request).execute();//返回的数据存在response中,创建一个方法解析他analysisJsonWithJsonObject(response);//第二种解析方式,使用使用谷歌提供的GSON来解析,不同的是response在接收时返回的是String类型的String data = response.body().toString();analysisRequestWithGSON(data);} catch (IOException E) {E.printStackTrace();}}

2.解析数据

2.1JsonObject解析数据

代码如下(示例):
注意:我们在解析的时候需要看json数据是怎样嵌套的,{}的表示对象,[]表示数组,我们针对不同的嵌套方式要根据情况来按顺序去判断获取对象还是数组,这里我简单演示一下

      private void analysisJsonWithJsonObject(Response response) {//使用官方提供的JsonObject来解析try {//由于在json中得到时一个数组嘛,所以我们首先需要实例化一个数组,参数是传过来的返回的结构JSONArray jsonArray = new JSONArray(response);//json数据格式数组内部是个对象,所以我们需要借助数组来得到每一个对象for (int i = 0; i < jsonArray.length(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);//接着就可以按照数据的给是使用键值对的方式将信息取出来了......}} catch (JSONException e) {e.printStackTrace();}}

2.2GSON解析数据

GSON是谷歌官方提供的一个解析json数据的一个开源库,这个从底层来看,就是对集合数组那一步做了一些封装和处理,大大简化了我们的操作。

    private void analysisRequestWithGSON(String data) {//使用谷歌提供的GSON来解析//这种解析方式有一点像Litepal操作数据库,我个人感觉都是封装映射成对象,等再学学我能看原码的时候再来看看情况Gson gson = new Gson();//发送出去得到回应List<APP> appList = gson.fromJson(data, new TypeToken<List<APP>>() {}.getType());//这样我们就已经获取到映射了for (APP app : appList) {int id = app.getId();String name = app.getName();int version = app.getVersion();//在读取之后起码比如说可以实例化一个APP对象,将值赋给它,再去界面上展示出来,对不对}
}

总结

还有一些解析这个数据的方式,等我再学学再来补充哈哈,对了,有一起学习的小伙伴可以加群:874308732

安卓学习之解析json数据相关推荐

  1. Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)

    JSON介绍: JSON:JavaScript对象表示法 JSON是存储和交换文本信息的语法. 特点: JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更易理解 ...

  2. Android手机应用开发(十) | HttpURLConnection的使用以及解析JSON数据

    实验目的 学会使用HttpURLConnection请求访问Web服务 学习Android线程机制,学会线程更新UI 学会解析JSON数据 学习CardView布局技术 效果 添加依赖 //json解 ...

  3. JSONObject 和 GSON 解析 JSON 数据详解(转)

    转载:http://www.jianshu.com/p/f99de3ec0636 点此进入:从零快速构建APP系列目录导图 点此进入:UI编程系列目录导图 点此进入:四大组件系列目录导图 点此进入:数 ...

  4. ajax写入json数据格式化,java ajax解析json数据格式化

    java ajax解析json数据格式化 [2021-02-01 23:35:58]  简介: 服务器 hadoop格式化HDFS出现错误解决办法 报错信息: host:java.net.Unknow ...

  5. php如何解析JSON数据

    php如何解析JSON数据?本篇文章就给大家介绍PHP解析JSON数据,即编码和解码JSON数据的基本方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来了解一下什么是J ...

  6. 教你不编程快速解析 JSON 数据

    JSON 是一种轻量级的,不受语言约束的数据存储格式,大部分编程语言都可以解析它,并且对编程人员也十分友好.我们在进行通讯/数据交互时,非常经常用到 JSON 格式. 但是,我们在进行数据存储的时候, ...

  7. java解析json数据_java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...

  8. 在php中怎么解析json数据,php解析json数据

    在我们使用编程语言的时候,对于数据的格式会出现不能直接使用的情况,所以就会有解析的操作.在php中有专门解析json的函数,那就是json_decode().想要进一步的运用这个函数,我们还需要对它的 ...

  9. 深入分析jquery解析json数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. JSON数据如下,是一个嵌套JSON: {"comments":[{& ...

最新文章

  1. python判断一个数是整数、浮点数还是字符串
  2. 风之语.甲骨文裁员之我见
  3. ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法
  4. .net中关键字new的用法
  5. php redis decr_对于高并发的问题你知道怎么处理吗?php接口如何处理并发问题
  6. Linux下Nginx访问web目录提示403Forbidden
  7. 【ACM】nyoj_305_表达式求值_201308081018
  8. 搞清Image加载事件(onload)、加载状态(complete)后,实现图片的本地预览,并自适应于父元素内(完成)...
  9. abp vnext中swagger使用小结
  10. 存PHP,数据存储 · PHP – Bmob后端云
  11. 自由职业者互联网进化记
  12. ubuntu linux u盘安装教程,U盘安装ubuntu的详细教程
  13. 导航窗口用html语言怎么写,html通用导航条制作详解
  14. vsftpd基于mysql_vsftpd基于mysql实现用户认证
  15. 示波器的带宽和采样率
  16. OpenCV 常见问题解决方案
  17. 华为手机手机与计算机传输,华为手机怎么和电脑进行互联传输文件
  18. 机器学习一脸懵笔记【05】概率论
  19. 由《天龙八部》想到的
  20. 【线性代数】深入理解矩阵乘法、对称矩阵、正定矩阵

热门文章

  1. Spring Cloud Hystrix 源码系列:工作原理
  2. vue -V查看vue版本时,提示vue.js缺少标识符
  3. 大数据助力农牧业转型升级
  4. JAVA重点类 多线程Thread 创建 生命周期 同步
  5. 应聘架构师,面试最容易被问啥?
  6. 修改oracle的连接时间,如何显式修改数据库连接超时时间
  7. C++,创建临时变量传递给参数为常量的函数,lvalue与rvalue的转换。
  8. TOM在线与Skype联手推出Tom-Skype
  9. 2019零售商业趋势:关于私域流量、裂变营销、下沉市场的商业逻辑思考!
  10. MySQL正则表达式