一、前言
最近在用c#做一个项目,需要获取实时天气信息,调研了好多能够提供该服务的服务器,最终决定使用和风天气。官网如下:https://www.heweather.com/。通过发送相应的请求,我们得到服务器返回的数据。如下所示:
{"HeWeather6":[{"basic":{"cid":"CN101120206","location":"黄岛","parent_city":"青岛","admin_area":"山东","cnty":"中国","lat":"35.87513733","lon":"119.99552155","tz":"+8.00"},"update":{"loc":"2018-10-18 08:45","utc":"2018-10-18 00:45"},"status":"ok","now":{"cloud":"0","cond_code":"100","cond_txt":"晴","fl":"11","hum":"47","pcpn":"0.0","pres":"1024","tmp":"13","vis":"30","wind_deg":"311","wind_dir":"西北风","wind_sc":"2","wind_spd":"9"}}]}
我想得到"cond_txt"键所对应的天气情况的内容,应该如何解析呢?
二、Newtonsoft.Json.dll控件的使用
我们借助强大的Newtonsoft.Json.dll控件来帮助我们解析json格式的数据。该控件完全开源,官方网址:https://www.newtonsoft.com/json,大家可以从该网址下载该控件,并且有相关的使用说明。也可以去我的资源页找我分享的,https://download.csdn.net/download/wwwlyj123321/10728473。下载完成之后在C#的工程中添加引用,
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
这样基本的框架就搭建完成了。
三、转换json格式为C#类
我们需要对应的变量来存储Newtonsoft解析出来的数据。我们可以直接使用该网站来自动生成http://json2csharp.chahuo.com/
将服务器返回的内容复制粘贴到待转换的区域:
点击转换:
将转换完成的类复制到我们的C#工程即可。
四、获取天气内容
我们的天气内容存储在cond_txt键所对用的内容中,解析之后就很容易提取出来,相关代码如下:
RootObject deserializedProduct = JsonConvert.DeserializeObject<RootObject>(result1);
HeWeather6 heweather6 = deserializedProduct.HeWeather6[0];
Now now = heweather6.now;
String weatherinfo = now.cond_txt;
其中result1就是我们从服务器获得的json格式的数据,weatherinfo就是我们想要获得的天气情况。
ref:
https://blog.csdn.net/weixin_39874268/article/details/77302255