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

复杂的json的解析(以和天气的json为例)

2016-05-27 10:44 495 查看
和天气的接口返回的json如下,我是费了九牛二虎之力才弄明白怎么解析

{"HeWeather data service 3.0":[{"aqi":{"city":{"aqi":"89","co":"1","no2":"83","o3":"38","pm10":"87","pm25":"89","qlty":"良","so2":"7"}},"basic":{"city":"北京","cnty":"中国","id":"CN101010100","lat":"39.904000","lon":"116.391000","update":{"loc":"2016-05-27 09:51","utc":"2016-05-27
01:51"}},"daily_forecast":[{"astro":{"sr":"04:50","ss":"19:33"},"cond":{"code_d":"100","code_n":"100","txt_d":"晴","txt_n":"晴"},"date":"2016-05-27","hum":"14","pcpn":"0.0","pop":"0","pres":"1008","tmp":{"max":"31","min":"18"},"vis":"10","wind":{"deg":"199","dir":"南风","sc":"3-4","spd":"14"}},{"astro":{"sr":"04:49","ss":"19:33"},"cond":{"code_d":"101","code_n":"100","txt_d":"多云","txt_n":"晴"},"date":"2016-05-28","hum":"15","pcpn":"0.0","pop":"0","pres":"1004","tmp":{"max":"30","min":"18"},"vis":"10","wind":{"deg":"197","dir":"无持续风向","sc":"微风","spd":"0"}},{"astro":{"sr":"04:49","ss":"19:34"},"cond":{"code_d":"100","code_n":"101","txt_d":"晴","txt_n":"多云"},"date":"2016-05-29","hum":"8","pcpn":"0.0","pop":"0","pres":"1007","tmp":{"max":"31","min":"17"},"vis":"10","wind":{"deg":"349","dir":"北风","sc":"3-4","spd":"10"}},{"astro":{"sr":"04:48","ss":"19:35"},"cond":{"code_d":"101","code_n":"104","txt_d":"多云","txt_n":"阴"},"date":"2016-05-30","hum":"16","pcpn":"0.3","pop":"37","pres":"1001","tmp":{"max":"31","min":"21"},"vis":"10","wind":{"deg":"220","dir":"无持续风向","sc":"微风","spd":"0"}},{"astro":{"sr":"04:48","ss":"19:36"},"cond":{"code_d":"101","code_n":"100","txt_d":"多云","txt_n":"晴"},"date":"2016-05-31","hum":"13","pcpn":"0.0","pop":"0","pres":"1008","tmp":{"max":"30","min":"18"},"vis":"10","wind":{"deg":"58","dir":"无持续风向","sc":"微风","spd":"9"}},{"astro":{"sr":"04:47","ss":"19:36"},"cond":{"code_d":"100","code_n":"101","txt_d":"晴","txt_n":"多云"},"date":"2016-06-01","hum":"11","pcpn":"0.0","pop":"12","pres":"1011","tmp":{"max":"31","min":"20"},"vis":"10","wind":{"deg":"6","dir":"无持续风向","sc":"微风","spd":"10"}},{"astro":{"sr":"04:47","ss":"19:37"},"cond":{"code_d":"101","code_n":"104","txt_d":"多云","txt_n":"阴"},"date":"2016-06-02","hum":"8","pcpn":"0.0","pop":"6","pres":"1005","tmp":{"max":"28","min":"19"},"vis":"10","wind":{"deg":"196","dir":"无持续风向","sc":"微风","spd":"9"}}],"hourly_forecast":[{"date":"2016-05-27
10:00","hum":"19","pop":"0","pres":"1011","tmp":"29","wind":{"deg":"197","dir":"西南风","sc":"微风","spd":"13"}},{"date":"2016-05-27 13:00","hum":"15","pop":"0","pres":"1009","tmp":"32","wind":{"deg":"199","dir":"西南风","sc":"3-4","spd":"20"}},{"date":"2016-05-27
16:00","hum":"14","pop":"0","pres":"1007","tmp":"32","wind":{"deg":"198","dir":"西南风","sc":"3-4","spd":"22"}},{"date":"2016-05-27 19:00","hum":"19","pop":"0","pres":"1007","tmp":"29","wind":{"deg":"200","dir":"西南风","sc":"3-4","spd":"17"}},{"date":"2016-05-27
22:00","hum":"30","pop":"0","pres":"1008","tmp":"26","wind":{"deg":"213","dir":"西南风","sc":"微风","spd":"16"}}],"now":{"cond":{"code":"100","txt":"晴"},"fl":"25","hum":"31","pcpn":"0","pres":"1011","tmp":"26","vis":"10","wind":{"deg":"140","dir":"南风","sc":"3-4","spd":"11"}},"status":"ok","suggestion":{"comf":{"brf":"较不舒适","txt":"白天天气晴好,明媚的阳光在给您带来好心情的同时,也会使您感到有些热,不很舒适。"},"cw":{"brf":"较适宜","txt":"较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"},"drsg":{"brf":"热","txt":"天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。"},"flu":{"brf":"少发","txt":"各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。"},"sport":{"brf":"较适宜","txt":"天气较好,但风力较大,推荐您进行室内运动,若在户外运动请注意防风。"},"trav":{"brf":"适宜","txt":"天气较好,是个好天气哦。稍热但是风大,能缓解炎热的感觉,适宜旅游,可不要错过机会呦!"},"uv":{"brf":"很强","txt":"紫外线辐射极强,建议涂擦SPF20以上、PA++的防晒护肤品,尽量避免暴露于日光下。"}}}]}

首先需要引入import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

JSONArray aa = (JSONArray) jsStr.get("HeWeather data service 3.0");
JSONObject json = aa.getJSONObject(0);

JSONObject  aqi = json.getJSONObject("aqi");
JSONObject city = aqi.getJSONObject("city");

        String Taqi = city.getString("aqi");

        String pm25 = city.getString("pm25");

        //String Tqlty = city.getString("qlty")==null?"良":city.getString("qlty");

        int taqi = Integer.parseInt(Taqi);

        String Tqlty;

        if(0<taqi&&taqi<60){

        Tqlty = "优";

        }else if(60<taqi&&taqi<100){

        Tqlty = "良";

        }else if(100<taqi&&taqi<150){

        Tqlty = "轻度污染";

        }else if(150<taqi&&taqi<200){

        Tqlty = "中度污染";

        }else{

        Tqlty = "重度污染";

        }

JSONObject  basic = json.getJSONObject("basic");
String mcity = basic.getString("city");

JSONObject  now = json.getJSONObject("now");

JSONArray  daily = json.getJSONArray("daily_forecast");
//今天天气
JSONObject todayCityObject = daily.getJSONObject(0);
JSONObject todayTemp  = todayCityObject.getJSONObject("tmp");
JSONObject todayCond  = todayCityObject.getJSONObject("cond");
JSONObject todayWind  = todayCityObject.getJSONObject("wind");
String Tdir = todayWind.getString("dir");
String Tsc = todayWind.getString("sc");
String todayMaxTem = todayTemp.getString("max");
String todayMinTem = todayTemp.getString("min");
String Tday = todayCond.getString("txt_d");
String Tnight = todayCond.getString("txt_n");
//七天天气情况
List<Object> list = new ArrayList<Object>();
for(int i=0;i<daily.size();i++){
JSONObject cityObject = daily.getJSONObject(i);
JSONObject Temp  = cityObject.getJSONObject("tmp");
JSONObject Cond  = cityObject.getJSONObject("cond");
JSONObject Wind  = cityObject.getJSONObject("wind");
String date = cityObject.getString("date");
String dir = Wind.getString("dir");
String sc = Wind.getString("sc");
String MaxTem = Temp.getString("max");
String MinTem = Temp.getString("min");
String day = Cond.getString("txt_d");
String night = Cond.getString("txt_n");
Map<String, String> map = new HashMap<String, String>();
map.put("date", date);
map.put("minTem", MinTem);
map.put("MaxTem", MaxTem);
map.put("day", day);
map.put("night", night);
map.put("dir", dir);
map.put("sc", sc);
list.add(i, map);
}
JSONArray  hourly = json.getJSONArray("hourly_forecast");
JSONObject hourlyObject = daily.getJSONObject(0);
//JSONObject astro = cityObject.getJSONObject("astro");
//String mr = astro.getString("mr");

//String  status = json.getString("status");
JSONObject  suggesstion = json.getJSONObject("suggestion");

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