安卓Json数据的解析
2014-04-25 22:48
483 查看
Json:
一种key--Value 形式的数据格式,通常用于不同系统之间的数据交换。
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。
Json 示例一:
{"id":1,"card_id":"1397907614312","name":"test_user","end_at":"2014-06-01 00:00:00","status":"OK","createdAt":"Sat
Apr 19 19:40:15 CST 2014","updatedAt":"Sat Apr 19 19:40:15 CST 2014","remark":""}
这是最简单的Json形式,key--value之间用冒号隔开,key是一个字符串,value可以是int,String,还可以是Json对象。每个key--value之间用逗号隔开,最外用大括号括起来,每个大括号代表一个Json型数据。
下面使用Androd提供的JSONObject来解析它。
这样就可以把Json的数据分解开。
Json实例二、
// {
//"count":19,
//"trains":
//{"0":
//{"id":1,
// "card_id":"1397907614312",
//"train_info":"test train info",
//"train_date":"Apr 19, 2014 11:49:06 AM",
//"createdAt":"2014-4-19 19:49:07",
//"updatedAt":"2014-4-19 19:49:07",
//"remark":""},
//"1":
//{"id":2,
//"card_id":"1397907614312",
//"train_info":"test train info",
//"train_date":"Apr 19, 2014 11:59:41 AM",
//"createdAt":"2014-4-19 19:59:42",
//"updatedAt":"2014-4-19 19:59:42","remark":""},
//"2":
//{"id":3,
//"card_id":"1397907614312",
//"train_info":"test train info",
//"train_date":"Apr 19, 2014 12:03:02 PM",
//"createdAt":"2014-4-19 20:03:03",
//"updatedAt":"2014-4-19 20:03:03","remark":""},
这是一个稍稍复杂的嵌套型的Json数据,最外层的Json只有两个key--value对,count---19 和trains--剩下的所有。
剩下的所有也是一个嵌套的Json数据,key是一个有序的数组,从1直到n;value还是一个Json的数据形式。并且这个Json是最简单的Json,只有有限项,可以用示例一中的方法解析。综上分析,我们需要对这个Json嵌套分析三次,层层深入,逐步逼近最小的数据项,完成Json的解析。
示例源码:
Card 是事先定义好的一个类,类中包含了数据中的各个字段。
还有一种Json型的数据value是数组形式的,明白了以上解析的原理,就不难掌握数组形式的Json的解析,目前项目中还没有用到,以后用到再补充。
一种key--Value 形式的数据格式,通常用于不同系统之间的数据交换。
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。
Json 示例一:
{"id":1,"card_id":"1397907614312","name":"test_user","end_at":"2014-06-01 00:00:00","status":"OK","createdAt":"Sat
Apr 19 19:40:15 CST 2014","updatedAt":"Sat Apr 19 19:40:15 CST 2014","remark":""}
这是最简单的Json形式,key--value之间用冒号隔开,key是一个字符串,value可以是int,String,还可以是Json对象。每个key--value之间用逗号隔开,最外用大括号括起来,每个大括号代表一个Json型数据。
下面使用Androd提供的JSONObject来解析它。
/** * 普通Json数据解析 * @param strResult */ private static void parseJson(String strResult) { try { JSONObject jsonObj = new JSONObject(strResult); int id = jsonObj.getInt("id"); int card_id = jsonObj.getInt("card_id"); String name = (String) jsonObj.get("name"); String end_at = (String) jsonObj.get("end_at"); String status = (String) jsonObj.get("status"); String createdAt = (String) jsonObj.get("createdAt"); String updatedAt = (String) jsonObj.get("updatedAt"); String remark = (String) jsonObj.get("remark"); Log.i("json","ID号:"+id + ", 卡ID号:" + card_id + ",名称:" + name+ ",有效期至:"+ end_at + ",状态:"+status+ ",创建日期:"+createdAt+ ",更新日期:"+updatedAt+ ",标志位:"+remark+"1234567890" ); } catch (JSONException e) { System.out.println("Json parse error"); e.printStackTrace(); } }
这样就可以把Json的数据分解开。
Json实例二、
// {
//"count":19,
//"trains":
//{"0":
//{"id":1,
// "card_id":"1397907614312",
//"train_info":"test train info",
//"train_date":"Apr 19, 2014 11:49:06 AM",
//"createdAt":"2014-4-19 19:49:07",
//"updatedAt":"2014-4-19 19:49:07",
//"remark":""},
//"1":
//{"id":2,
//"card_id":"1397907614312",
//"train_info":"test train info",
//"train_date":"Apr 19, 2014 11:59:41 AM",
//"createdAt":"2014-4-19 19:59:42",
//"updatedAt":"2014-4-19 19:59:42","remark":""},
//"2":
//{"id":3,
//"card_id":"1397907614312",
//"train_info":"test train info",
//"train_date":"Apr 19, 2014 12:03:02 PM",
//"createdAt":"2014-4-19 20:03:03",
//"updatedAt":"2014-4-19 20:03:03","remark":""},
这是一个稍稍复杂的嵌套型的Json数据,最外层的Json只有两个key--value对,count---19 和trains--剩下的所有。
剩下的所有也是一个嵌套的Json数据,key是一个有序的数组,从1直到n;value还是一个Json的数据形式。并且这个Json是最简单的Json,只有有限项,可以用示例一中的方法解析。综上分析,我们需要对这个Json嵌套分析三次,层层深入,逐步逼近最小的数据项,完成Json的解析。
示例源码:
private static void parseJson2(String strResult) { try { JSONObject jsonObj = new JSONObject(strResult); int count = jsonObj.getInt("count"); JSONObject trains = jsonObj.getJSONObject("trains"); JSONObject[] trainInfo = new JSONObject[count]; for(int i=0;i
Card 是事先定义好的一个类,类中包含了数据中的各个字段。
还有一种Json型的数据value是数组形式的,明白了以上解析的原理,就不难掌握数组形式的Json的解析,目前项目中还没有用到,以后用到再补充。
相关文章推荐
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- 解決Linux下Android开发真机调试设备不被识别问题
- [Android]在代码里运行另一个程序的方法
- Android多窗口的实现
- [软件咨询]WPS2012正式版已发布 金山Office移动版4.0发布
- Android笔记-Linux Kernel Ftrace (Function Trace)解析
- newtonsoft.json解析天气数据出错解决方法
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- android USB如何修改VID具体实现
- Android增量升级的方法和原理详细介绍
- Android Mouse实现过程详细笔记
- 深入Android Browser配置管理的详解
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧
- Android Mms之:深入理解对话列表管理
- jquery中ajax调用json数据的使用说明