2014-11-14 89 views
-3

我想在json中獲取數據並在我的程序中使用它們。我使用這些代碼:如何在C#中使用這個json變量?

public class Test 
     { 
      public class Coord 
      { 
       public double lon { get; set; } 
       public double lat { get; set; } 
      } 

      public class Weather 
      { 
       public int id { get; set; } 
       public string main { get; set; } 
       public string description { get; set; } 
       public string icon { get; set; } 
      } 

      public class Root 
      { 
       public Coord coord { get; set; } 
       public List<Weather> weather { get; set; } 
       public string name { get; set; } 
      } 
     } 

我知道如何使用簡單的變量是這樣的:

var obj = JsonConvert.DeserializeObject<Test.Root>(jsontest); 
double myLon = obj.coord.lon; 

我的問題是如何使用變量天氣類中,因爲它在列表中定義!例如,我想將「圖標」存儲在字符串變量中。即時通訊新的C#,請幫助我。

+2

它應該反序列化任何適用的'Weather'對象。它沒有那樣做? – BradleyDotNET 2014-11-14 23:29:14

+0

我不清楚你在問什麼。你面臨的問題是什麼?正如我所說的 – 2014-11-14 23:29:52

+0

double myLon = obj.coord.lon;工作正常,但是當我寫字符串myDescription = obj.weather.description;它不工作,我在我的程序中出現錯誤。 – Hadi290 2014-11-14 23:36:16

回答

1

由於天氣List'1類型,你必須使用一個索引來訪問它像一個列表:

double icon = obj.weather[0].icon 

或使用LINQ:

double icon = obj.weather.First().icon 

您可以在列表中選擇多個Weather對象,所以要相應地對待它。

+0

特別是在第二個,你應該使用'FirstOrDefault'來防止列表爲空(除非你捕捉異常是可以的)。 – BradleyDotNET 2014-11-14 23:39:56

+0

如果列表爲空,則FirstOrDefault()。圖標仍然會拋出一個'NullReferenceException'。要點是,除非你知道你在做什麼,否則不要使用linq。 – 2014-11-14 23:40:56

+0

啊;優點。 JSON不太可能有一個* empty *列表,它只會是空的。 – BradleyDotNET 2014-11-14 23:42:16

相關問題