2016-07-28 79 views
0
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但在用戶代碼附加 信息沒有處理:不能反序列化當前JSON對象(例如 {「name」:「value」})...Json的反序列化錯誤C#MVC

對不起,我有一個想法,我做錯了什麼?

+2

將您返回的值加回到'dataweather' ... –

回答

1

只是一個快速提示,在visual studio中,有一個內置功能可以將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; } 
}