C# C和天气API,获取特定数据
我从天气API获取数据,我只想返回特定数据,比如湿度,而不是整个对象C# C和天气API,获取特定数据,c#,C#,我从天气API获取数据,我只想返回特定数据,比如湿度,而不是整个对象 public Object getWeatherForcast() { string url = "http://api.openweathermap.org/data/2.5/weather?q=Aalborg&APPID=appid&units=imerial"; var client = new WebClient(); var content =
public Object getWeatherForcast()
{
string url = "http://api.openweathermap.org/data/2.5/weather?q=Aalborg&APPID=appid&units=imerial";
var client = new WebClient();
var content = client.DownloadString(url);
var serializer = new JavaScriptSerializer();
var jsonContent = serializer.Deserialize<Object>(content);
//here if I use only jsonContent it returns all data, unfortunately I don t know how to get
//the specific data
return jsonContent.main.humidity;
}
在这里,如果我只使用jsonContent,它将返回所有数据,不幸的是,我不知道如何获取
具体数据
与反序列化为类型对象不同,建议您反序列化为自己的对象类型,如天气报告或类似的内容,这样您可以执行以下操作:
WeatherReport report = serializer.Deserialize<WeatherReport>(content);
jsonContent.main[2].ToString(); //Or whatever other method or property you prefer
如前所述,最好准备一个表示要从JSON中读取的数据的类,但如果您想按自己的方式读取数据,或者只是从main部分读取单个值(例如湿度),则可以将dynamic与以下小代码片段一起使用:
var jsonContent = serializer.Deserialize<dynamic>(content);
var humidity = jsonContent["main"]["humidity"];
在返回之前,您可以使用LINQ之类的工具,只选择湿度。快速和肮脏的把戏,我相信其他答案会更好。你也可以发布你从API得到的JSON字符串吗?@Mahdi这是你需要的吗?我编辑了这篇文章。同样的问题,对象不包含主。。。ToString似乎没有帮助…请尝试jsonContent[3][2];var客户端=新的网络客户端;var content=client.DownloadStringurl;var serializer=新的JavaScriptSerializer;var jsonContent=serializer.Deserializecontent;返回jsonContent[3][2].ToString;您建议的代码应该是这样的吗?消息为无法将[]索引应用于object类型的dexpression
var jsonContent = JsonConvert.DeserializeObject<dynamic>(content);
humidity = jsonContent.main.humidity;