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入门到精通教程
查看: 453|回复: 0

[Java基础知识]JAVA操作json:获得天气预报信息

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-9-30 17:42:01 | 显示全部楼层 |阅读模式
    前面我们讲了java操作json的一些基本操作,现在就将他应用于实战中:
    1. import java.io.BufferedReader;
    2. import java.io.FileNotFoundException;
    3. import java.io.IOException;
    4. import java.io.InputStreamReader;
    5. import java.net.SocketTimeoutException;
    6. import java.net.URL;
    7. import java.net.URLConnection;

    8. import net.sf.json.JSONObject;

    9. public class Weather {
    10.     String Ctiyid;
    11.     URLConnection connectionData;
    12.     StringBuilder sb;
    13.     BufferedReader br;// 读取data数据流
    14.     JSONObject jsonData;
    15.     JSONObject info;
    16.      
    17.     //从天气网解析的参数
    18.     String city ;// 城市
    19.     String date_y;//日期
    20.     String week ;// 星期
    21.     String fchh ;// 发布时间
    22.      
    23.     String weather1 ;// 未来1到6天天气情况
    24.     String weather2 ;
    25.     String weather3 ;
    26.     String weather4 ;
    27.     String weather5 ;
    28.     String weather6 ;
    29.      
    30.     String wind1;//未来1到6天风况
    31.     String wind2;
    32.     String wind3;
    33.     String wind4;
    34.     String wind5;
    35.     String wind6;
    36.      
    37.     String fl1;//风的等级
    38.     String fl2;
    39.     String fl3;
    40.     String fl4;
    41.     String fl5;
    42.     String fl6;
    43.      
    44.      
    45.     String temp1 ;// 未来1到6天的气温
    46.     String temp2 ;
    47.     String temp3 ;
    48.     String temp4 ;
    49.     String temp5 ;
    50.     String temp6 ;
    51.      
    52.     String index;// 今天的穿衣指数
    53.     String index_uv ;// 紫外指数
    54.     String index_tr ;// 旅游指数
    55.     String index_co ;// 舒适指数
    56.     String index_cl ;// 晨练指数
    57.     String index_xc;//洗车指数
    58.     String index_d;//天气详细穿衣指数
    59.      
    60.   
    61.      
    62.     public Weather(String Cityid) throws IOException ,NullPointerException{
    63.         // 解析本机ip地址

    64.         this.Ctiyid = Cityid;
    65.         // 连接中央气象台的API
    66.         URL url = new URL("http://m.weather.com.cn/data/" + Ctiyid + ".html");
    67.         connectionData = url.openConnection();
    68.         connectionData.setConnectTimeout(1000);
    69.         try {
    70.             br = new BufferedReader(new InputStreamReader(
    71.                     connectionData.getInputStream(), "UTF-8"));
    72.             sb = new StringBuilder();
    73.             String line = null;
    74.             while ((line = br.readLine()) != null)
    75.                 sb.append(line);
    76.         } catch (SocketTimeoutException e) {
    77.             System.out.println("连接超时");
    78.         } catch (FileNotFoundException e) {
    79.             System.out.println("加载文件出错");
    80.         }
    81.             String datas = sb.toString();   
    82.             
    83.            jsonData = JSONObject.fromObject(datas);
    84.           //  System.out.println(jsonData.toString());  
    85.            info = jsonData.getJSONObject("weatherinfo");
    86.          
    87.         city = info.getString("city").toString();
    88.         System.out.println(city);
    89.         week =  info.getString("week").toString();
    90.         date_y = info.getString("date_y").toString();
    91.         fchh = info.getString("fchh").toString();
    92.         //1到6天的天气
    93.         weather1 =  info.getString("weather1").toString();
    94.         System.out.println(weather1);
    95.         weather2 =  info.getString("weather2").toString();
    96.         weather3 =  info.getString("weather3").toString();
    97.         weather4 =  info.getString("weather4").toString();
    98.         weather5 =  info.getString("weather5").toString();
    99.         weather6 =  info.getString("weather6").toString();
    100.         //1到6天的气温
    101.         temp1 = info.getString("temp1").toString();
    102.         temp2 = info.getString("temp2").toString();
    103.         temp3 = info.getString("temp3").toString();
    104.         temp4 = info.getString("temp4").toString();
    105.         temp5 = info.getString("temp5").toString();
    106.         temp6 = info.getString("temp6").toString();
    107.         //1到6天的风况
    108.         wind1 = info.getString("wind1").toString();
    109.         wind2 = info.getString("wind2").toString();
    110.         wind3 = info.getString("wind3").toString();
    111.         wind4 = info.getString("wind4").toString();
    112.         wind5 = info.getString("wind5").toString();
    113.         wind6 = info.getString("wind6").toString();
    114.         //1到6天的风速
    115.         fl1 = info.getString("fl1").toString();
    116.         fl2 = info.getString("fl2").toString();
    117.         fl3 = info.getString("fl3").toString();
    118.         fl4 = info.getString("fl4").toString();
    119.         fl5 = info.getString("fl5").toString();
    120.         fl6 = info.getString("fl6").toString();
    121.         //各种天气指数
    122.         index = info.getString("index").toString();
    123.         index_uv = info.getString("index_uv").toString();
    124.         index_tr = info.getString("index_tr").toString();
    125.         index_co= info.getString("index_co").toString();
    126.         index_cl = info.getString("index_cl").toString();
    127.         index_xc = info.getString("index_xc").toString();
    128.         index_d =  info.getString("index_d").toString();

    129.     }
    130.     public static void main(String[] args) {
    131.         try {
    132.             new Weather("101270803"); // 101270803就是你的城市代码
    133.         } catch (NullPointerException e) {
    134.             // TODO Auto-generated catch block
    135.             e.printStackTrace();
    136.         } catch (IOException e) {
    137.             // TODO Auto-generated catch block
    138.             e.printStackTrace();
    139.         }
    140.     }
    141. }
    142. 运行:
    复制代码
    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就能看到里的数据
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 18:18 , Processed in 0.363484 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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