为了账号安全,请及时绑定邮箱和手机立即绑定

从天气 API 返回指定值 - ASP.NET/C#

从天气 API 返回指定值 - ASP.NET/C#

C#
慕少森 2022-10-23 14:08:23
我一直在寻找一些时间来解决这个问题。我正在尝试将 Weather Unlocked 本地天气 API ( https://developer.weatherunlocked.com/documentation/localweather ) 添加到我的网站。但是我只能返回所有当前值。我希望能够取出特定的项目,例如温度、湿度或纬度/经度,而不会出现其他所有内容。代码    const string WEBSERVICE_URL = "http://api.weatherunlocked.com/api/current/51.50,-0.12?app_id=42fd0793&app_key=cd2365f533caad77dc2d874aabc1625b";    try    {        var webRequest = WebRequest.Create(WEBSERVICE_URL);        if (webRequest != null)        {            webRequest.Method = "GET";            webRequest.ContentType = "application/json";            webRequest.Headers["X-API-Key"] = "cd2365f533caad77dc2d874aabc1625b";            //Get the response             WebResponse wr = webRequest.GetResponseAsync().Result;            Stream receiveStream = wr.GetResponseStream();            StreamReader reader = new StreamReader(receiveStream);            string content = reader.ReadToEnd();            lblContent.Text = content;        }    }    catch (Exception ex)    {        lblContent.Text = ex.ToString();    }结果{  "lat":51.5,  "lon":0.05,  "alt_m":5.0,  "alt_ft":16.4,  "wx_desc":"Clear skies",  "wx_code":0,  "wx_icon":"Clear.gif",  "temp_c":7.0,  "temp_f":44.6,  "feelslike_c":2.6,  "feelslike_f":36.68,  "humid_pct":70.0,  "windspd_mph":19.26,  "windspd_kmh":31.0,  "windspd_kts":16.74,  "windspd_ms":8.61,  "winddir_deg":250.0,  "winddir_compass":"WSW",  "cloudtotal_pct":25.0,  "vis_km":10.0,  "vis_mi":6.21,  "vis_desc":null,  "slp_mb":1002.0,  "slp_in":29.67,  "dewpoint_c":1.93,  "dewpoint_f":35.47}显然,这很混乱,并非一切都是必要的。提前致谢!编辑 我尝试反序列化,但出现以下错误:System.NullReferenceException: Object reference not set to an instance of an object当我在反序列化中编写 foreach 循环时,我得到了这个。我的猜测是它正在调用“天气”类型的对象(类似于给定示例中对象 facebookFriend 的类型为 Facebook),并且没有任何内容存储在天气对象中。也许我在 API 的调用中做错了什么,我应该将它存储在我的 Weather 类中?
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

我在手机上输入了这个,但是是这样的:


using System;

using System.Net;

using Newtonsoft.Json;


public class Program

{

    public static void Main()

    {

        string json = new WebClient().DownloadString("** YOUR URL **");


        WeatherData weatherData = JsonConvert.DeserializeObject<WeatherData>(json);


        Console.WriteLine("Lat:             " + weatherData.Lat);

        Console.WriteLine("Lon:             " + weatherData.Lon);

        Console.WriteLine("Alt_M:           " + weatherData.Alt_M);

        Console.WriteLine("Alt_FT:          " + weatherData.Alt_FT);

        Console.WriteLine("WX_Desc:         " + weatherData.WX_Desc);

        Console.WriteLine("WX_Code:         " + weatherData.WX_Code);

        Console.WriteLine("WX_Icon:         " + weatherData.WX_Icon);

        Console.WriteLine("Temp_C:          " + weatherData.Temp_C);

        Console.WriteLine("Temp_F:          " + weatherData.Temp_F);

        Console.WriteLine("Feelslike_C:     " + weatherData.Feelslike_C);

        Console.WriteLine("Feelslike_F:     " + weatherData.Feelslike_F);

        Console.WriteLine("Humid_PCT:       " + weatherData.Humid_PCT);

        Console.WriteLine("Windspd_MPH:     " + weatherData.Windspd_MPH);

        Console.WriteLine("Windspd_KMH:     " + weatherData.Windspd_KMH);

        Console.WriteLine("Windspd_KTS:     " + weatherData.Windspd_KTS);

        Console.WriteLine("Windspd_MS:      " + weatherData.Windspd_MS);

        Console.WriteLine("Winddir_DEG:     " + weatherData.Winddir_DEG);

        Console.WriteLine("Winddir_Compass: " + weatherData.Winddir_Compass);

        Console.WriteLine("Cloudtotal_PCT:  " + weatherData.Cloudtotal_PCT);

        Console.WriteLine("Vis_KM:          " + weatherData.Vis_KM);

        Console.WriteLine("Vis_MI:          " + weatherData.Vis_MI);

        Console.WriteLine("Vis_Desc:        " + weatherData.Vis_Desc);

        Console.WriteLine("\n");

    }

}


public class WeatherData

{

    public string Lat { get; set; }

    public string Lon { get; set; }

    public string Alt_M { get; set; }

    public string Alt_FT { get; set; }

    public string WX_Desc { get; set; }

    public string WX_Code { get; set; }

    public string WX_Icon { get; set; }

    public string Temp_C { get; set; }

    public string Temp_F { get; set; }

    public string Feelslike_C { get; set; }

    public string Feelslike_F { get; set; }

    public string Humid_PCT { get; set; }

    public string Windspd_MPH { get; set; }

    public string Windspd_KMH { get; set; }

    public string Windspd_KTS { get; set; }

    public string Windspd_MS { get; set; }

    public string Winddir_DEG { get; set; }

    public string Winddir_Compass { get; set; }

    public string Cloudtotal_PCT { get; set; }

    public string Vis_KM { get; set; }

    public string Vis_MI { get; set; }

    public string Vis_Desc { get; set; }

    // OTHER PROPERTIES HERE ...

}


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信