C# C和天气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 =

我从天气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 = 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;