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

JSON解析数据

2015-10-22 00:20 453 查看
JSON的优势在于它的体积理小,在网络上进行传输时,可以节省流量。虽然语义较差,但是对于只给程序员看的数据来说,这个缺点不用考虑。

一、使用JSONObject

JSON数据用JSONObject类来解析逻辑比较简单,用String建立对象,然后用这对象取值就行了,不同的类型,用不同的参数接着就可以了,和XML一样,一层一层解析进去就可以了。

getJSONObject(“data”),去接住一个json

getJSONArray(“forecast”),接住一个数组

getString(1):根据index接住一个Sring(也可以int等),调用此方法的对象是JSONArray

//下面对json的数据进行处理
//1.建立一个JSONObject对象接受一个String类型的json
JSONObject jsonObject =new JSONObject(json);
//2.每一层的json,进行解析就可以了
String desc=jsonObject.getString("desc");//原始数据是什么类型,就用什么接
int status= jsonObject.getInt("status");

if(status==1000){
//如果还一个JSONObject,就从头再解析
JSONObject dataObject=jsonObject.getJSONObject("data");
//解析到数组
JSONArray data=dataObject.getJSONArray("forecast");
//解析到具体的值了
String[] weather=new String[]{
data.getString(1),
data.getString(2),
data.getString(3),
};

}


二、使用GSON

GSON是没在官方的API中,要导包。GSON主要就是可以将一段JSON格式的字符串自动映射成一个对象。假如星期三一天的天气,有一个Weather类

GSON gson = new GSON();
Weather weather =gson.fromJson(data,Weather.class);


附:解析的原始数据

{
"desc": "OK",
"status": 1000,
"data": {
"wendu": "27",
"ganmao": "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。",
"forecast": [
{
"fengxiang": "无持续风向",
"fengli": "微风级",
"high": "高温 30℃",
"type": "多云",
"low": "低温 23℃",
"date": "21日星期三"
},
{
"fengxiang": "无持续风向",
"fengli": "微风级",
"high": "高温 30℃",
"type": "多云",
"low": "低温 23℃",
"date": "22日星期四"
},
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json 数据 安卓