安卓Json数据的解析

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的解析,目前项目中还没有用到,以后用到再补充。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值