asp.net web api-Json反序列化错误c#mvc

本文关键字:错误 c#mvc 反序列化 api-Json net web asp | 更新日期: 2023-09-27 17:58:59

Controller
{
namespace WebApplication10.Controllers
{
    public class Default1Controller : ApiController
    {
        [ResponseType(typeof(WeatherItem))]
        public WeatherItem Post(Wcall call)
        {
            string apikey = //MYAPIKEY;
            string url = string.Format("http://api.openweathermap.org/data/2.5/forecast/daily?q={0}&units=metric&cnt=1&APPID={1}", call.city1, apikey);
            WebClient A1 = new WebClient();
            string dataweather = A1.DownloadString(url);
            WeatherItem a2 = JsonConvert.DeserializeObject<WeatherItem>(dataweather);
            string przyklad = a2.list.pressure;
            return a2;
        }
    }
}
}
class
{
namespace WebApplication10.Models
{
    public class WeatherItem
    {
        public List list { get; set; }
        public string cod { get; set; }
        public string message { get; set; }
        public int cnt { get; set; }
        //public List<City> city { get; set; }       
    }
    public class List
    {
        public int dt { get; set; }
       // public List<Temp> temp { get; set; }
        public string pressure { get; set; }
        public int humidity { get; set; }
       // public List<Weather> weather { get; set; }
        public string speed { get; set; }
        public string deg { get; set; }
        public string clauds { get; set; }
        public int rain { get; set; }
    }
    public class Wcall
    {
        public string city1 { get; set; }
        public string street { get; set; }
    }
    public class City
    {
        public int id { get; set; }
        public string name { get; set; }
        //public List<Coords> coords { get; set; }
        public string country { get; set; }
        public int population { get; set; }
    }
    public class Coords
    {
        public string lon { get; set; }
        public string lat { get; set; }
    }
    public class Temp
    {
        public string day { get; set; }
        public string min { get; set; }
        public string max { get; set; }
        public string night { get; set; }
        public string eve { get; set; }
        public string morn { 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; }
    }
}
}

异常:类型为的异常中出现"Newtonsoft.Json.JsonSerializationException"Newtonsoft.Json.dll,但未在用户代码Additional中处理信息:无法反序列化当前JSON对象(例如。{"name":"value"}(。。。

对不起我的英语,有人知道我做错了什么吗?

asp.net web api-Json反序列化错误c#mvc

在visualstudio中,有一个内置功能可以将json转换为C#模型。

您可以在Edit'Paste Special'Parse Json as classes中找到它

关于您的问题,您的模型无效,请尝试此操作。

public class WeatherItem
{
    public City city { get; set; }
    public string cod { get; set; }
    public float message { get; set; }
    public int cnt { get; set; }
    public List[] list { get; set; }
}
public class City
{
    public int id { get; set; }
    public string name { get; set; }
    public Coord coord { get; set; }
    public string country { get; set; }
    public int population { get; set; }
}
public class Coord
{
    public float lon { get; set; }
    public float lat { get; set; }
}
public class List
{
    public int dt { get; set; }
    public Temp temp { get; set; }
    public float pressure { get; set; }
    public int humidity { get; set; }
    public Weather[] weather { get; set; }
    public float speed { get; set; }
    public int deg { get; set; }
    public int clouds { get; set; }
    public float rain { get; set; }
}
public class Temp
{
    public float day { get; set; }
    public float min { get; set; }
    public float max { get; set; }
    public float night { get; set; }
    public float eve { get; set; }
    public float morn { 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; }
}