3
回答
怎么解析百度天气返回的json数据?
滴滴云服务器,限时包月0.9元,为开发者而生>>>   
做一个查询天气的功能,用的是百度天气的api,获取数据后不会解析,在网上搜了很久还是没看懂,在此诚心求教~~
package test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Weather { 
	static String httpUrl = "http://apis.baidu.com/heweather/weather/free";
	static String httpArg = "city=kunming";
	public static void main(String[] args) { 
	        try { 
	        	String jsonResult = request(httpUrl, httpArg);
	        	System.out.println(jsonResult);
	        } catch (Exception e) { 
	            e.printStackTrace(); 
	        } 
	    } 
	public static String request(String httpUrl, String httpArg) {
	    BufferedReader reader = null;
	    String result = null;
	    StringBuffer sbf = new StringBuffer();
	    httpUrl = httpUrl + "?" + httpArg;
	    try {
	        URL url = new URL(httpUrl);
	        HttpURLConnection connection = (HttpURLConnection) url
	                .openConnection();
	        connection.setRequestMethod("GET");
	        // 填入apikey到HTTP header
	        connection.setRequestProperty("apikey",  "2cd25a5a08f30e66adc572c98b574cbc");
	        connection.connect();
	        InputStream is = connection.getInputStream();
	        reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
	        String strRead = null;
	        while ((strRead = reader.readLine()) != null) {
	            sbf.append(strRead);
	            sbf.append("\r\n");
	        }
	        reader.close();
	        result = sbf.toString();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }
	    return result;
	}

}



控制带输出的数据,格式化后:
{
    "HeWeather data service 3.0": [
        {
            "aqi": {
                "city": {
                    "aqi": "49",
                    "co": "1",
                    "no2": "45",
                    "o3": "26",
                    "pm10": "48",
                    "pm25": "26",
                    "qlty": "优",
                    "so2": "6"
                }
            },
            "basic": {
                "city": "北京",
                "cnty": "中国",
                "id": "CN101010100",
                "lat": "39.904000",
                "lon": "116.391000",
                "update": {
                    "loc": "2015-10-31 11:49",
                    "utc": "2015-10-31 03:49"
                }
            },
            "daily_forecast": [
                {
                    "astro": {
                        "sr": "06:41",
                        "ss": "17:14"
                    },
                    "cond": {
                        "code_d": "100",
                        "code_n": "101",
                        "txt_d": "晴",
                        "txt_n": "多云"
                    },
                    "date": "2015-10-31",
                    "hum": "19",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1031",
                    "tmp": {
                        "max": "16",
                        "min": "3"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "229",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                },
                {
                    "astro": {
                        "sr": "06:42",
                        "ss": "17:13"
                    },
                    "cond": {
                        "code_d": "100",
                        "code_n": "100",
                        "txt_d": "晴",
                        "txt_n": "晴"
                    },
                    "date": "2015-11-01",
                    "hum": "14",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1023",
                    "tmp": {
                        "max": "17",
                        "min": "3"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "293",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                },
                {
                    "astro": {
                        "sr": "06:43",
                        "ss": "17:12"
                    },
                    "cond": {
                        "code_d": "100",
                        "code_n": "100",
                        "txt_d": "晴",
                        "txt_n": "晴"
                    },
                    "date": "2015-11-02",
                    "hum": "16",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1021",
                    "tmp": {
                        "max": "17",
                        "min": "5"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "178",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                },
                {
                    "astro": {
                        "sr": "06:45",
                        "ss": "17:10"
                    },
                    "cond": {
                        "code_d": "100",
                        "code_n": "101",
                        "txt_d": "晴",
                        "txt_n": "多云"
                    },
                    "date": "2015-11-03",
                    "hum": "28",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1020",
                    "tmp": {
                        "max": "17",
                        "min": "7"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "196",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                },
                {
                    "astro": {
                        "sr": "06:46",
                        "ss": "17:09"
                    },
                    "cond": {
                        "code_d": "101",
                        "code_n": "104",
                        "txt_d": "多云",
                        "txt_n": "阴"
                    },
                    "date": "2015-11-04",
                    "hum": "33",
                    "pcpn": "0.0",
                    "pop": "27",
                    "pres": "1021",
                    "tmp": {
                        "max": "16",
                        "min": "7"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "12",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                },
                {
                    "astro": {
                        "sr": "06:47",
                        "ss": "17:08"
                    },
                    "cond": {
                        "code_d": "104",
                        "code_n": "305",
                        "txt_d": "阴",
                        "txt_n": "小雨"
                    },
                    "date": "2015-11-05",
                    "hum": "33",
                    "pcpn": "0.0",
                    "pop": "27",
                    "pres": "1031",
                    "tmp": {
                        "max": "13",
                        "min": "6"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "69",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                },
                {
                    "astro": {
                        "sr": "06:48",
                        "ss": "17:07"
                    },
                    "cond": {
                        "code_d": "305",
                        "code_n": "101",
                        "txt_d": "小雨",
                        "txt_n": "多云"
                    },
                    "date": "2015-11-06",
                    "hum": "58",
                    "pcpn": "1.3",
                    "pop": "49",
                    "pres": "1027",
                    "tmp": {
                        "max": "10",
                        "min": "6"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "135",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "0"
                    }
                }
            ],
            "hourly_forecast": [
                {
                    "date": "2015-10-31 13:00",
                    "hum": "21",
                    "pop": "0",
                    "pres": "1032",
                    "tmp": "17",
                    "wind": {
                        "deg": "230",
                        "dir": "西南风",
                        "sc": "微风",
                        "spd": "3"
                    }
                },
                {
                    "date": "2015-10-31 16:00",
                    "hum": "24",
                    "pop": "0",
                    "pres": "1030",
                    "tmp": "15",
                    "wind": {
                        "deg": "204",
                        "dir": "西南风",
                        "sc": "微风",
                        "spd": "9"
                    }
                },
                {
                    "date": "2015-10-31 19:00",
                    "hum": "30",
                    "pop": "0",
                    "pres": "1030",
                    "tmp": "11",
                    "wind": {
                        "deg": "218",
                        "dir": "西南风",
                        "sc": "微风",
                        "spd": "10"
                    }
                },
                {
                    "date": "2015-10-31 22:00",
                    "hum": "32",
                    "pop": "0",
                    "pres": "1029",
                    "tmp": "6",
                    "wind": {
                        "deg": "249",
                        "dir": "西南风",
                        "sc": "微风",
                        "spd": "6"
                    }
                }
            ],
            "now": {
                "cond": {
                    "code": "101",
                    "txt": "多云"
                },
                "fl": "13",
                "hum": "24",
                "pcpn": "0",
                "pres": "1033",
                "tmp": "14",
                "vis": "10",
                "wind": {
                    "deg": "234",
                    "dir": "西南风",
                    "sc": "3-4",
                    "spd": "0"
                }
            },
            "status": "ok",
            "suggestion": {
                "comf": {
                    "brf": "舒适",
                    "txt": "白天不太热也不太冷,风力不大,相信您在这样的天气条件下,应会感到比较清爽和舒适。"
                },
                "cw": {
                    "brf": "较适宜",
                    "txt": "较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"
                },
                "drsg": {
                    "brf": "较舒适",
                    "txt": "建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"
                },
                "flu": {
                    "brf": "较易发",
                    "txt": "天凉,昼夜温差较大,较易发生感冒,请适当增减衣服,体质较弱的朋友请注意适当防护。"
                },
                "sport": {
                    "brf": "较不宜",
                    "txt": "天气较好,但考虑天气寒冷,推荐您进行室内运动,户外运动时请注意保暖并做好准备活动。"
                },
                "trav": {
                    "brf": "适宜",
                    "txt": "天气较好,温度适宜,是个好天气哦。这样的天气适宜旅游,您可以尽情地享受大自然的风光。"
                },
                "uv": {
                    "brf": "中等",
                    "txt": "属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"
                }
            }
        }
    ]
}



问题来了,这些数据我该怎么处理?比如说我要在控制台输出2015年11月1日的天气信息,应该怎么从这个数据中获取?
举报
顶部