Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 986|回复: 0

JAVA操作json:获得天气预报信息 源码下载

  [复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2013-1-7 19:47:23 | 显示全部楼层 |阅读模式
    前面我们讲了java操作json的一些基本操作,现在就将他应用于实战中:

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.SocketTimeoutException;
    import java.net.URL;
    import java.net.URLConnection;

    import net.sf.json.JSONObject;

    public class Weather {
        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;//天气详细穿衣指数
         
      
         
        public Weather(String Cityid) throws IOException ,NullPointerException{
            // 解析本机ip地址

            this.Ctiyid = Cityid;
            // 连接中央气象台的API
            URL url = new URL("http://m.weather.com.cn/data/" + Ctiyid + ".HTML");
            connectionData = url.openConnection();
            connectionData.setConnectTimeout(1000);
            try {
                br = new BufferedReader(new InputStreamReader(
                        connectionData.getInputStream(), "UTF-8"));
                sb = new StringBuilder();
                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);
              //  System.out.println(jsonData.toString());  
               info = jsonData.getJSONObject("weatherinfo");
             
            city = info.getString("city").toString();
            System.out.println(city);
            week =  info.getString("week").toString();
            date_y = info.getString("date_y").toString();
            fchh = info.getString("fchh").toString();
            //1到6天的天气
            weather1 =  info.getString("weather1").toString();
            System.out.println(weather1);
            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();

        }
        public static void main(String[] args) {
            try {
                new Weather("101270803"); // 101270803就是你的城市代码
            } catch (NullPointerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    运行:

    C:\java>java Weather
    武胜
    小雨

    URL url = new URL("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就能看到里的数据

    源码下载地址:

    文件名:weather.rar 下载地址:http://www.javaxxz.com/file.php?id=15116018
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2013-1-7 19:47:54 | 显示全部楼层
    谢谢楼主分享啊!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-23 12:01 , Processed in 0.350341 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表