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实例二、
// {
//"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的解析,目前项目中还没有用到,以后用到再补充。