2013-09-22 284 views
0

我該如何訪問這個JSON(http://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true)嵌套數組,如 timeseries.shortname?我試過這樣但它不起作用。JSON.net訪問嵌套數組,對象

string url = "http://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true"; 

HttpWebRequest request = HttpWebRequest.CreateHttp(url); 
WebResponse response = await request.GetResponseAsync(); 

using (Stream stream = response.GetResponseStream()) 
{ 
    JsonReader reader = new JsonTextReader(new StreamReader(stream)); 
    dynamic info = JArray.Load(reader); 

    foreach (var item in info) 
    { 
     myModel.Add(new ItemModel() 
     { 
      uuid = item.uuid, 
      number = item.number, 
      city_longname = item.longname, 
      timeseries = item.timeseries.shortname 
     }); 
    } 
} 

的3項工作,但最後(時間序列)提供了以下錯誤:無法執行運行時的空引用

+0

什麼是* actual * JSON響應?我會懷疑它丟失或被錯誤地訪問。確保在問題中包含相關數據(並且不要期望人們遵循鏈接:)。 – user2246674

+0

VS調試器只給出「無法在空引用上執行運行時綁定」的響應 – user2025830

+3

'timeseries'是一個數組,請嘗試'item.timeseries [0] .shortname' – I4V

回答

0

dynamic性能給你JToken對象結合。使用這些Value屬性可以爲您提供string表示法。爲了獲得它的類型安全,你需要解析/轉換。由於您沒有提供您的ItemModel課程詳細信息,因此我無法在此幫助您。

myModel.Add(new ItemModel() 
{ 
    uuid = item.uuid.Value, 
    number = item.number.Value, 
    city_longname = item.longname.Value 
}); 

timeseries屬性是一個JArray對象。您無法直接進入shortname屬性。你必須先選擇一個索引(例如,item.timeseries[5],給你JObject實例)。有關從類型安全的方式獲取實際值的詳細信息也適用於此處。