Я пытаюсь получить данные о погоде из онлайн как json, а затем десериализую json в объект, который я могу использовать. Вот мой код:Deserialize Json String to Object
public static RootObject7 GetWeather7(int zip)
{
var url = "http://api.weatherunlocked.com/api/forecast/us." + zip.ToString() + "?app_id=xxxxxxx&app_key=xxxxxxxxxxxxxxxxxxxxxxx";
var weather = new wunlocked();
string json = weather.getJson(url);
JavaScriptSerializer serializer = new JavaScriptSerializer();
var data = (RootObject7)serializer.Deserialize<RootObject7>(json);
return data;
}
private string getJson(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try
{
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
}
throw;
}
}
Я отладка, и то, что происходит, мой объект RootObject7 данных создаются, и внутри него есть «Прогноз» объект, который, как предполагается, содержит список другой информации, но вместо он равен нулю. Я уже определил все классы (они длинны, поэтому, если это важно, я опубликую их, но в остальном я не думаю, что мне нужно). Я никогда не делал ничего подобного раньше, так что большинство из этого появилось из других примеров кода, которые я нашел, но, очевидно, я их не собирал правильно, так как мой объект всегда имеет значение null, но когда я перехожу к URL-адресу , там есть действительный xml. Я не уверен, что мне нужно каким-то образом преобразовать xml в json в мой код, или если это делается как-то? Как я уже сказал, я действительно не знаю, что я делаю, но если у кого-то есть предложения, это будет здорово.
Вместо JavaScriptSerializer использовать Json.NET. И покажи Джону и Классе. – BWA
Когда вы создаете прогноз-манекен, используя свои собственные классы, а затем * сериализуете *, вы получаете JSON, похожий на то, что вы получаете от веб-службы? –
в вашем отладчике, поставьте точку останова сразу после 'string json = weather.getJson (url);' и посмотрите, заполняется ли переменная 'json', как и ожидалось. – Falanwe