[英]Deserialize Json String to Object
我正在嘗試以json的形式從在線獲取天氣數據,然后將json反序列化為我可以使用的對象。 這是我的代碼:
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。 我不確定我是否需要以某種方式將xml轉換為json格式的xml,還是以某種方式完成此操作? 就像我說的那樣,我真的不知道我在做什么,但是如果有人提出建議,那就太好了。
嘗試
dynamic data = serializer.Deserialize(json);
然后在調試器中檢查數據對象-您可能無需反序列化到固定接口即可獲取所需的數據。 使用動態方法可能也是處理服務升級的更強大的解決方案,這可能會使設置的接口/對象更加脆弱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.