簡體   English   中英

將Json字符串反序列化為對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM