Android解析JSON对象及实例说明
2023-06-13 09:14:50 时间
JSON是一种轻量级的对象,数据体积小,方便传输,易于解析!
首先新建一个类工具类JsonUtil,用于获取请求返回的数据
publicclassJsonUtil{
privatestaticfinalStringTAG="JSONUTIL";
publicstaticJSONObjectgetJSON(Stringurl)throwsException{
returnnewJSONObject(getRequest(url));
}
protectedstaticStringgetRequest(Stringurl){
returngetRequest(url,newDefaultHttpClient(newBasicHttpParams()));
}
protectedstaticStringgetRequest(Stringurl,DefaultHttpClientclient){
Stringresult=null;
intstatusCode=0;
HttpGethttpGet=newHttpGet(url);
try{
HttpResponsehttpResponse=client.execute(httpGet);
statusCode=httpResponse.getStatusLine().getStatusCode();//statusCode为200时表示请求数据成功
result=parseInputStream(httpResponse.getEntity());
}catch(ClientProtocolExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
httpGet.abort();
}
returnresult;
}
privatestaticStringparseInputStream(HttpEntityentity){
StringBuildersb=null;
try{
sb=newStringBuilder("");
InputStreaminputStream=entity.getContent();
intlength=0;
byte[]buffer=newbyte[1024];
while((length=inputStream.read(buffer))>-1){
sb.append(newString(buffer,0,length));
}
returnsb.toString();
}catch(IllegalStateExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
}
获取数据并解析数据:
注:模拟器访问自己电脑上的网站不能用localhost:8080或者127.0.0.1:8080,因为模拟器默认将模拟器本身设定为localhost,所以如果设置为这样的方式就将访问模拟器本身。我们需要将主机名修改为10.0.2.2,此主机名是模拟器设定的特定的访问自己电脑的主机名,它记录了你的电脑的名称。
另外:获取数据需要将下面的方法封装到一个新线程中,不能放在程序主线程当中!
/*http://10.0.2.2:8080/index.jsp
*{students:[{name:"Livingstone",age:25},{name:"LS",age:26}],class:"09GIS"}
*/
privatevoidLivingstone(){
try{
StringURL="http://10.0.2.2:8080/index.jsp";
//获取后台返回的JSON对象-->{students:[{name:"Livingstone",age:25},{name:"LS",age:26}],class:"09GIS班"}
JSONObjectjObj=JsonUtil.getJSON(URL);
//获取学生数组-->students:[{name:"Livingstone",age:25},{name:"LS",age:26}]
JSONArrayjArr=jObj.getJSONArray("students");
//获取班级-->class:"09GIS班"
Stringclassname=jObj.getString("class");
//根据索引获取第一个学生的JSON对象-->{name:"Livingstone",age:25}
JSONObjectj1=jArr.getJSONObject(0);
StringstudentInfo=jArr.length()+"个学生"+j1.getString("name")
+j1.getInt("age");
}catch(Exceptione){
e.printStackTrace();
}
}
相关文章
- android开机动画多长时间_Android开机动画原理分析
- android 读取本地数据库db文件(Android sqlite)
- strictmode android,(十三)Android 性能优化 StrictMode
- android 定时器实例,Android定时器和Handler用法实例分析
- Android studio学习笔记:adb被系统空闲进程占用了怎么办?
- 手机数据丢失,如何恢复?FonePaw Android Data Recovery Mac版
- 【Android 高性能音频】hello-oboe 示例解析 ( Oboe 源代码依赖 | CMakeList.txt 构建脚本分析 | Oboe 源代码构建脚本分析 )
- 【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )
- 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )
- 【Android 逆向】函数拦截实例 ( ② 插桩操作 | 保存实际函数入口 6 字节数据 | 在插桩的函数入口写入跳转指令 | 构造拼接桩函数 )
- 【错误记录】Android Studio 编译报错 ( kotlin library {0} was compiled with a newer kotlin compiler and not b )
- Android横竖屏切换View设置不同尺寸或等比例缩放的XML解决方案详解手机开发
- 亚马逊应用商店太拉胯:Win11的Android应用支持计划前景不明朗
- Android系统基于Linux内核,实现移动设备突破极限。(android linux内核)
- Android图片处理实例介绍(图)
- Android实现图片循环播放的实例方法
- Android控件(button)对齐方法实现详解
- Android按钮按下的时候改变颜色实现方法
- ubuntu用wifi连接android调试程序的步骤
- Android自定义ActionBar实例
- Android中Parcelable的作用实例解析
- Android入门之Gallery+ImageSwitcher用法实例解析