java解析json获取天气预报城市代码_JAVA操作json实战--获得天气预报信息

前面我们讲了java操作json的一些基本操作,现在就将他应用于实战中:

packagecom.lyqf;

importjava.io.BufferedReader;

importjava.io.FileNotFoundException;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.net.SocketTimeoutException;

importjava.net.URL;

importjava.net.URLConnection;

importnet.sf.json.JSONObject;

publicclassWeather {

String Ctiyid;

URLConnection connectionData;

StringBuilder sb;

BufferedReader br;// 读取data数据流

JSONObject jsonData;

JSONObject info;

//从天气网解析的参数

String city ;// 城市

String date_y;//日期

String week ;// 星期

String fchh ;// 发布时间

String weather1 ;// 未来1到6天天气情况

String weather2 ;

String weather3 ;

String weather4 ;

String weather5 ;

String weather6 ;

String wind1;//未来1到6天风况

String wind2;

String wind3;

String wind4;

String wind5;

String wind6;

String fl1;//风的等级

String fl2;

String fl3;

String fl4;

String fl5;

String fl6;

String temp1 ;// 未来1到6天的气温

String temp2 ;

String temp3 ;

String temp4 ;

String temp5 ;

String temp6 ;

String index;// 今天的穿衣指数

String index_uv ;// 紫外指数

String index_tr ;// 旅游指数

String index_co ;// 舒适指数

String index_cl ;// 晨练指数

String index_xc;//洗车指数

String index_d;//天气详细穿衣指数

publicWeather(String Cityid)throwsIOException ,NullPointerException{

// 解析本机ip地址

this.Ctiyid = Cityid;

// 连接中央气象台的API

URL url = newURL("http://m.weather.com.cn/data/"+ Ctiyid +".html");

connectionData = url.openConnection();

connectionData.setConnectTimeout(1000);

try{

br = newBufferedReader(newInputStreamReader(

connectionData.getInputStream(), "UTF-8"));

sb = newStringBuilder();

String line = null;

while((line = br.readLine()) !=null)

sb.append(line);

} catch(SocketTimeoutException e) {

System.out.println("连接超时");

} catch(FileNotFoundException e) {

System.out.println("加载文件出错");

}

String datas = sb.toString();

jsonData = JSONObject.fromObject(datas);

info = jsonData.getJSONObject("info");

city = info.getString("city").toString();

week =  info.getString("week").toString();

date_y = info.getString("date_y").toString();

fchh = info.getString("fchh").toString();

//1到6天的天气

weather1 =  info.getString("weather1").toString();

weather2 =  info.getString("weather2").toString();

weather3 =  info.getString("weather3").toString();

weather4 =  info.getString("weather4").toString();

weather5 =  info.getString("weather5").toString();

weather6 =  info.getString("weather6").toString();

//1到6天的气温

temp1 = info.getString("temp1").toString();

temp2 = info.getString("temp2").toString();

temp3 = info.getString("temp3").toString();

temp4 = info.getString("temp4").toString();

temp5 = info.getString("temp5").toString();

temp6 = info.getString("temp6").toString();

//1到6天的风况

wind1 = info.getString("wind1").toString();

wind2 = info.getString("wind2").toString();

wind3 = info.getString("wind3").toString();

wind4 = info.getString("wind4").toString();

wind5 = info.getString("wind5").toString();

wind6 = info.getString("wind6").toString();

//1到6天的风速

fl1 = info.getString("fl1").toString();

fl2 = info.getString("fl2").toString();

fl3 = info.getString("fl3").toString();

fl4 = info.getString("fl4").toString();

fl5 = info.getString("fl5").toString();

fl6 = info.getString("fl6").toString();

//各种天气指数

index = info.getString("index").toString();

index_uv = info.getString("index_uv").toString();

index_tr = info.getString("index_tr").toString();

index_co= info.getString("index_co").toString();

index_cl = info.getString("index_cl").toString();

index_xc = info.getString("index_xc").toString();

index_d =  info.getString("index_d").toString();

}

publicstaticvoidmain(String[] args) {

try{

newWeather("101270803"); //101270803就是你的城市代码

} catch(NullPointerException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch(IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

URL url =newURL("http://m.weather.com.cn/data/"+ Ctiyid +".html"); 这里就是中国天气网数据页面,然后我们

URLConnection类的openConnection方法得到连接,再通过流的形行将其写到我们的StringBuilder之中。他是一串json的数据格式,

所以我们就须要将他转正json,

jsonData = JSONObject.fromObject(datas);

info = jsonData.getJSONObject("info");

这里就是我们转化,然后info.getString("XX").toString(); 得到对应的数据了。

附:

你看我们直接输入:http://m.weather.com.cn/data/101270803.html就能看到里的数据是:{"weatherinfo":{"city":"武胜","city_en":"wusheng","date_y":"2012年12月25日","date":"","week":"星期二","fchh":"08","cityid":"101270803","temp1":"9℃~6℃","temp2":"8℃~5℃","temp3":"10℃~5℃","temp4":"8℃~4℃","temp5":"7℃~3℃","temp6":"7℃~3℃","tempF1":"48.2℉~42.8℉","tempF2":"46.4℉~41℉","tempF3":"50℉~41℉","tempF4":"46.4℉~39.2℉","tempF5":"44.6℉~37.4℉","tempF6":"44.6℉~37.4℉","weather1":"阴转小雨","weather2":"小雨转阴","weather3":"多云","weather4":"小雨","weather5":"多云","weather6":"多云","img1":"2","img2":"7","img3":"7","img4":"2","img5":"1","img6":"99","img7":"7","img8":"99","img9":"1","img10":"99","img11":"1","img12":"99","img_single":"2","img_title1":"阴","img_title2":"小雨","img_title3":"小雨","img_title4":"阴","img_title5":"多云","img_title6":"多云","img_title7":"小雨","img_title8":"小雨","img_title9":"多云","img_title10":"多云","img_title11":"多云","img_title12":"多云","img_title_single":"阴","wind1":"南风小于3级","wind2":"南风小于3级","wind3":"南风小于3级","wind4":"南风小于3级","wind5":"南风小于3级","wind6":"南风小于3级","fx1":"南风","fx2":"南风","fl1":"小于3级","fl2":"小于3级","fl3":"小于3级","fl4":"小于3级","fl5":"小于3级","fl6":"小于3级","index":"凉","index_d":"天气凉,建议着厚外套加毛衣等春秋服装。年老体弱者宜着大衣、呢外套加羊毛衫。","index48":"凉","index48_d":"天气凉,建议着厚外套加毛衣等春秋服装。年老体弱者宜着大衣、呢外套加羊毛衫。","index_uv":"最弱","index48_uv":"最弱","index_xc":"不宜","index_tr":"适宜","index_co":"较舒适","st1":"10","st2":"6","st3":"8","st4":"3","st5":"10","st6":"5","index_cl":"不宜","index_ls":"不太适宜","index_ag":"极不易发"}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值