http://api.openweathermap.org/data/2.5/weather?q=Ankara,tr这是当前的json数据,首先我用json2c#创建它,我得到这个
using System;
using System.Collections.Generic;
namespace weatherSample
{
public class service
{
public service ()
{
}
}
public class Coord
{
public double lon { get; set; }
public double lat { get; set; }
}
public class Sys
{
public int type { get; set; }
public int id { get; set; }
public double message { get; set; }
public string country { get; set; }
public int sunrise { get; set; }
public int sunset { get; set; }
}
public class Weather
{
public int id { get; set; }
public string main { get; set; }
public string description { get; set; }
public string icon { get; set; }
}
public class MainWeather
{
public double temp { get; set; }
public int pressure { get; set; }
public int humidity { get; set; }
public double temp_min { get; set; }
public double temp_max { get; set; }
}
public class Wind
{
public double speed { get; set; }
public int deg { get; set; }
}
public class Clouds
{
public int all { get; set; }
}
public class RootObject
{
public Coord coord { get; set; }
public Sys sys { get; set; }
public List<Weather> weather { get; set; }
public string @base { get; set; }
public MainWeather main { get; set; }
public Wind wind { get; set; }
public Clouds clouds { get; set; }
public int dt { get; set; }
public int id { get; set; }
public string name { get; set; }
public int cod { get; set; }
}
}
现在我试图解析,但遇到了一些麻烦,
WebClient webC = new WebClient (link);
var jsonDatas = JObject.Parse (y);
var c = JsonConvert.DeserializeObject <MainWeather> (y);
Console.Write (c.temp);
它返回0值
哪里出了问题?
您需要反序列化为RootObject
的实例:
RootObject result = JsonConvert.DeserializeObject<RootObject>(y);
然后访问MainWeather
属性:
Console.Write(result.main.temp);
示例:https://dotnetfiddle.net/LWfHrH
如果你只关心MainWeather
对象,你也可以这样做:
MainWeather r = JObject.Parse(y)["main"].ToObject<MainWeather>();