json으로 온라인 기상 데이터를 얻고 json을 deserialize하여 사용 가능한 객체로 변환하려고합니다. 여기에 내 코드입니다 :Json String을 객체에 비 직렬화하기
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입니다. 나는 이미 모든 수업을 정의했습니다 (길기 때문에 중요하다면 게시 할 것입니다. 그렇지 않으면 필요하다고 생각하지 않습니다). 나는 전에 이런 일을 한적 없다. 그래서 이것의 대부분은 내가 찾은 여기에있는 다른 코드 예제에서 나온 것이지만, 분명히 나는 그 객체들을 항상 맞춰 놓지 않았다. 왜냐하면 내 객체는 항상 null이지만 URL로 갈 때이다. 거기에 유효한 XML이 있습니다. 어떻게 든 내 코드에서 json으로 XML을 변환해야하는지, 아니면 어떻게 든 완료되고 있는지 확실하지 않습니다. 내가 말했듯이, 나는 정말로 내가하고있는 일을 알지 못한다. 그러나 누군가에게 제안이 있다면 그것은 좋을 것이다.
JavaScriptSerializer 대신 Json.NET을 사용하십시오. 그리고 Json과 clasess를 보여주세요. – BWA
자신의 클래스를 사용하여 더미 예측을 만든 다음 * serialize *하면 JSON을 웹 서비스에서 얻은 것과 비슷하게 만들 수 있습니까? –
디버거에'string json = weather.getJson (url); 바로 뒤에 중단 점을 넣고'json' 변수가 예상대로 채워지는지 확인하십시오. – Falanwe