如何分清JSON解析什么时候该用JSONObject,什么时候该用JSONArray。
2016-03-02 14:45
609 查看
前一段时间学习Android解析JSON数据,发现不知道什么时候该用JSONObject,什么时候该用JSONArray。所以通过上网查询了资料,然后整理写下这篇博客。
JSONObject: 可以看作是一个json对象,其包含一对(Key/Value)数值。所表现的形式是最外被大括号”{}”包裹,其中的Key和Value被冒号”:”分隔,数据结构为:
JOSNArray: 它代表一组有序的数值。所表现的形式是用方括号”[]”包裹,数值以逗号”,”分隔,数据结构为 :
简单来讲当要解析的JSON数据类型是:
具体我们通过例子说明:
以下是解析代码:
JSONObject: 可以看作是一个json对象,其包含一对(Key/Value)数值。所表现的形式是最外被大括号”{}”包裹,其中的Key和Value被冒号”:”分隔,数据结构为:
{key:value,key:value,…}的键值对的结构。在面向对象的语言中,key为对象的属性,value为对应的属性值。
JOSNArray: 它代表一组有序的数值。所表现的形式是用方括号”[]”包裹,数值以逗号”,”分隔,数据结构为 :
[value1,value2,value3]
简单来讲当要解析的JSON数据类型是:{"key":"value"}
就用JSONObject解析。如果是[value1,value2,value3]
就用JSONArray解析。
具体我们通过例子说明:单数据类型:{"id":"5","version":"5.5","name":"Angry Birds"} 复合数据类型: {/*JSONObject*/ "list":[/*JSONArray*/ {/*JSONObject*/ "id":"5", "version":"5.5", "name":"zhangsan" }, {/*JSONObject*/ "id":"6", "version":"6.0", "name":"lisi"}, { /*JSONObject*/ "id":"7", "version":"7.7", "name":"wangwu" } ] }
以下是解析代码:
//解析单数据类型 private void parseJSONWithJSONObject(String jsonData) { try { JSONObject jsonObject = new JSONObject(jsonData); String id = jsonObject.getString("id"); String version = jsonObject.getString("version"); String name = jsonObject.getString("name"); textView.setText(id + " " + version + " " + name); } catch (JSONException e) { e.printStackTrace(); } } //解析复合数据类型 private void parseJSONObjectOrJSONArray(String jsonData) { try { String count = ""; JSONObject jsonObject = new JSONObject(jsonData); JSONArray jsonArray = jsonObject.getJSONArray("list"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject1 = jsonArray.getJSONObject(i); String id = jsonObject.getString("id"); String version = jsonObject.getString("version"); String name = jsonObject.getString("name"); count = id + " " + version + " " + name; } textView.setText(count); } catch (JSONException e) { e.printStackTrace(); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories