用json.net解析json,但猜测有误



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>();

相关内容

  • 没有找到相关文章

最新更新