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

知识储备:JSON数据解析

2015-07-20 19:06 741 查看
Json数据概念介绍

概念:Json(JavaScript Object Notation):JavaScript对象表示法,是一种轻量级的数据交换格式。可以将json数据简单理解成有特定格式的字符串数据。Json数据交互呢指的就是这种特定格式字符串数据的传递。

与XML数据的比较:

1) 扩展性方面:XML数据的扩展性更好,通用性比较强

2) 数据传输方面:Json传输的数据量小,传输的速度快

3) 数据交互方面:Json数据的交互更加方便,解析过程更简单

4) 数据描述方面:XML对数据的描述性更强

Json的两种数据结构

1、Json对象:键值对的集合,

{
“name”:“jack”,
“age”:20
}


2、Json数组:值得有序列表(value可以使字符串、数字)

[
{"name" : "jack1","age" : "30"},{"name" : "jack2","age" : 30}
]


Json数据的构造

json数据解析常用的类:JSON、JSONObject、JSONArray

/**
*@pram key json对象的标识
*@pram value xml、javabean、ArrayList、Map对应的json数据
*/
public static String createJSONString(String key, Object value) {
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}


JSONObject提供了相应的API接口将XML数据、javabean数据、ArrayList数据、HashMap数据构造成相应的json数据。

Json数据的解析

可以通过JSONObject、JSONArray获得json数据对应的json对象或者数组,之后再将它们解析成对应的javabean啊、ArrayList啊,、HashMap形式的数据

1) 例如,对简单json数据的解析

{
"person":
{"address":"beijing","id":1001,"name":"jack"}
}


Person person= new Person();
JSONObject jsonObject = new JSONObject(jsonString);//获得该json数据对应的json对象
JSONObject personObject = jsonObjec.getJSONObject("person");//获取{"address":"beijing","id":1001,"name":"jack"}该json对象
person.setId(personObject.getInt("id"));
//根据key值获取相应的数据


2) 对含有json数组的json数据解析

{
"persons" :
[
{"address":"beijing","id":1000,"name":"jack"},
{"address1":"jiangxi","id1":1001,"name1":"jack1"},
{"address2":"hebei","id2":1002,"name2":"jack2"}
]
}


List<Person> list = new ArrayList<Perosn>();
JSONObject jsonObjet = new JSONObject(jsonString);
//获得json素组对象
JSONOArray = jsonObject.getJSONArray("persons");
//遍历json数组对象
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
person.setId(personObject.getInt("id"));
list.add(person);

}


List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
JSONObject jsonObjet = new JSONObject(jsonString);
JSONOArray = jsonObject.getJSONArray("persons");
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
Map<String,Object> map = new HashMap<String,Object>();O
for(Iterator<String> iter = jsonObject2.keys(); iter.hasNext();) {
String jsonKey = iter.next();
Objcet jsonValue = jsonObject.get(jsonKey)
map.put(jsonKey,jsonValue);
}
list.add(map);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: