您的位置:首页 > Web前端 > JavaScript

安卓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数据解析
* @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 json