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; }
    }
}
}

Exception:An exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll but was not handled in user code Additional information: Cannot deserialize the current JSON object (e.g. {"name":"value"})...

Sorry for my english, someone have a idea what i doing wrong?

1
  • 2
    Add the value that you get back to dataweather... Commented Jul 28, 2016 at 9:50

1 Answer 1

1

Just a quick tip, in visual studio, there's a built-in feature to convert json to C# model.

You can find it in Edit\Paste Special\Parse Json as classes

About your question, your model is invalid, try this.

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; }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.