用json.net解析一个json,但猜错了

时间:2014-10-29 19:55:40

标签: json json.net deserialization json-deserialization

http://api.openweathermap.org/data/2.5/weather?q=Ankara,tr这是当前的json数据,首先我用json 2 c创建它#i得到这个

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值

应该是什么错误?

1 个答案:

答案 0 :(得分:1)

您需要反序列化为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>();