C#实现天气预报
来源:互联网 发布:sql server身份验证sa 编辑:程序博客网 时间:2024/06/07 00:36
</pre> 我用的数据是来源于和风全球天气(企业),接口是百度提供的,api:<span style="color:rgb(51,51,51); font-family:Helvetica,'Microsoft Yahei',Arial,sans-serif; font-size:13px; line-height:14px">http://apis.baidu.com/heweather/weather/free,获取百度apikey的地址:http://apistore.baidu.com/apiworks/servicedetail/478.html,不多扯了,先上源码:<a target=_blank target="_blank" href="http://download.csdn.net/detail/xtcgch/9549829">源码</a>下载。</span><p></p><p><span style="color:rgb(51,51,51); font-family:Helvetica,'Microsoft Yahei',Arial,sans-serif; font-size:13px; line-height:14px"> 解析json要用到Newtonsoft.Json.dll文件,下载地址:<a target=_blank target="_blank" href="http://download.csdn.net/detail/xtcgch/9549837">源码下载</a></span></p><p><span style="color:rgb(51,51,51); font-family:Helvetica,'Microsoft Yahei',Arial,sans-serif; font-size:13px; line-height:14px"> 要从api获取天气数据,还需要在百度上申请apikey,申请好apikey之后替换getJson.cs文件中这一句代码request.Headers.Add("apikey", "你的apikey");中的“您的apikey”字段,然后请求api的代码和返回数据格式在<a target=_blank target="_blank" href="http://apistore.baidu.com/apiworks/servicedetail/478.html">获取api方法和返回数据格式</a>页面都有,这里不多说了,这里只说如何解析json数据。</span></p><p><span style="color:rgb(51,51,51); font-family:Helvetica,'Microsoft Yahei',Arial,sans-serif; font-size:13px; line-height:14px"> 首先要先引用<span style="color:rgb(51,51,51); font-family:Helvetica,'Microsoft Yahei',Arial,sans-serif; font-size:13px; line-height:14px">Newtonsoft.Json.dll这各dll,里面有JObject和JToken是我们要用到的。关键代码为:</span></span></p><pre name="code" class="csharp"> JObject firstObj = JObject.Parse(data); JToken firstToken = firstObj[name];
aqi aqi = JsonConvert.DeserializeObject<aqi>(<span style="font-family: Helvetica, 'Microsoft Yahei', Arial, sans-serif;">firstToken </span><span style="font-family: Helvetica, 'Microsoft Yahei', Arial, sans-serif;">.ToString());</span>其中第一句是把json字符串data转为jobject的格式,第二句是根据name来查找value值,第三句是把firstToken里面的字符串转为实体类,aqi就是一个实体类 。例如:data是
{"wind":{"deg":"240","dir":"西南风","sc":"4-5","spd":"19"}}name就是“wind”,value就是
{"deg":"240","dir":"西南风","sc":"4-5","spd":"19"}了解这个取值步骤后就可以对返回的json数据进行解析了,先来个数据的总体结构图:
首先要获取“HeWeather data service 3.0”后面的数据:
string name = String.Empty; int start_text = file_data.IndexOf("\"") + 1; int end_text = file_data.IndexOf(":") - 1; int len_text = end_text - start_text; name = file_data.Substring(start_text, len_text); JObject firstObj = JObject.Parse(data); JToken firstToken = firstObj[name];
firstToken里面就是获取到的,注意:后面的数据里是包含“[]”,这样的数据是不能直接转为实体类的,必须要去掉“[]”去掉"[]"的代码:
file_data = JsonConvert.SerializeObject(firstToken); int start_index = file_data.IndexOf('[') + 1; int end_index = file_data.LastIndexOf(']'); int len = end_index - start_index; file_data = file_data.Substring(start_index, len); JObject Obj = JObject.Parse(file_data);Obj就是去掉“[]”后的json格式数据对象,这样就可以直接获取想要的数据了,如获取“aqi”的数据:
//获取aqi的信息 JToken aqiToken = Obj["aqi"]; aqi aqi = JsonConvert.DeserializeObject<aqi>(aqiToken.ToString());
List<aqi> aqi = JsonConvert.DeserializeObject<List<aqi>>(aqiToken.ToString());来获取即可。
最后的效果图如下:
0 0
- C#实现天气预报
- C#实现winform天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用WebService实现天气预报
- C#调用webservers实现天气预报
- C#实现的天气预报服务组件
- 【转帖】C#调用WebService实现天气预报
- C#添加WebService服务实现天气预报
- c# 天气预报
- c#天气预报
- 天气预报实现
- c++学习第三天
- Android关于AndroidManifest.xml详细分析
- (hadoop学习-3)Total Order Partitioner
- 常用的java工具类
- UIViewController的完整生命周期
- C#实现天气预报
- 10.6 C++标准库的异常类层次结构
- 转载------常用的几种编码方式
- [Leetcode] 350. Intersection of Two Arrays II
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之一 : Maven的pom.xml环境配置及注意方面
- 11.1 标准模板库简介
- 数据结构与算法
- 一招制胜---详解分布式系统里session同步
- 11.2 迭代子类