概述
首先,为什么我要说解析JSON数据像是在剥洋葱呢,请看http://wthrcdn.etouch.cn/weather_mini?city=北京这是一串天气预报的JSON数据
得到如下:
假如这组JSON数据名称为jsonObject
{"desc":"OK","status":1000,"data":{"wendu":"3","ganmao":"昼夜温差大,且空气湿度较大,易发生感冒,请注意适当增减衣服,加强自我防护避免感冒。","forecast":[{"fengxiang":"北风","fengli":"微风级","high":"高温 6℃","type":"霾","low":"低温 -5℃","date":"4日星期三"},{"fengxiang":"北风","fengli":"微风级","high":"高温 3℃","type":"霾","low":"低温 -4℃","date":"5日星期四"},{"fengxiang":"南风","fengli":"微风级","high":"高温 4℃","type":"霾","low":"低温 -2℃","date":"6日星期五"},{"fengxiang":"南风","fengli":"微风级","high":"高温 1℃","type":"小雪","low":"低温 -4℃","date":"7日星期六"},{"fengxiang":"南风","fengli":"微风级","high":"高温 2℃","type":"阴","low":"低温 -5℃","date":"8日星期天"}],"yesterday":{"fl":"微风","fx":"南风","high":"高温 5℃","type":"霾","low":"低温 -5℃","date":"3日星期二"},"aqi":"256","city":"北京"}}
其中一共有四种数据:
JSONObject,JSONArray,String以及int
- JSONObject:如果剥掉外层用到里面的“data”数据,就要用到jsonObject.getJSONObject("data")
- JSONArray:如果再剥掉一层,用到"data"里面的"forecast"数组数据,就要用data.getJSONArray("forecast");抽离出JSONArray数据后,可以看出里面包含了7个天气JSONObject的数据,这时如果只需要用到其中一个,比如第一天的数据,就要用到forecast.getJSONObject(0);
- String:如果用到String类型的数据,比如第一层的“OK”,就用jsonObject.getString("desc")
- int:如果用到第一层“1000”,就用jsonObject.getInt("desc")