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日星期四"
},
}
}