2015-07-02 60 views
0

我試圖反序列化json。但我有幾個問題,特別是編譯器告訴我:在JSON類中缺少枚舉器

RootObject不包含GetEnumerator的公共定義。

這是json2csharp生成的類:

public class Self 
    { 
     public string href { get; set; } 
    } 

    public class Fixtures 
    { 
     public string href { get; set; } 
    } 

    public class Players 
    { 
     public string href { get; set; } 
    } 

    public class Links 
    { 
     public Self self { get; set; } 
     public Fixtures fixtures { get; set; } 
     public Players players { get; set; } 
    } 

    public class RootObject 
    { 
     public Links _links { get; set; } 
     public string name { get; set; } 
     public string code { get; set; } 
     public string shortName { get; set; } 
     public string squadMarketValue { get; set; } 
     public string crestUrl { get; set; } 
    } 

,這是我的代碼:

var obj = JsonConvert.DeserializeObject<RootObject>(responseText); 

      foreach (var item in obj) 
      { 
       item.name //... this is an example of the attribute that I want grab from the JSON for each team  
      } 

我需要通過遍歷所有的車隊,並將其保存到數據庫中。

這裏是JSON的結構,如果它可以是任何幫助:

{ 
"_links":{ 
"self":{ 
"href":"http://api.football-data.org/alpha/teams/19" 
}, 
"fixtures":{ 
"href":"http://api.football-data.org/alpha/teams/19/fixtures" 
}, 
"players":{ 
"href":"http://api.football-data.org/alpha/teams/19/players" 
} 
}, 
"name":"Eintracht Frankfurt", 
"code":"SGE", 
"shortName":"Eintr. Frankfurt", 
"squadMarketValue":"69,050,000 €", 
"crestUrl":"http://upload.wikimedia.org/wikipedia/commons/0/04/Eintracht_Frankfurt_Logo.svg" 
} 
+2

消息很清楚,你的對象不是可枚舉的。 –

+1

它是_one_對象。你認爲'foreach()'完全可以做什麼?如果你想讀取名字,你可以使用'obj.name'。它只包含一個名字。 – CodeCaster

+0

你可以告訴我如何迭代這個json從搶所有的價值?我想爲每個球隊獲得(鏈接,名稱,代碼,短名稱,squadMarketValue,crestUrl)。 –

回答

1
var obj = JsonConvert.DeserializeObject<RootObject>(responseText); 

將返回一個單一RootObject而不是對象的集合。

我認爲問題在於你的api調用。在這種情況下,您正在提出返回一個團隊(Eintracht Frankfurt)的請求。

您想打一個返回小組列表的調用。

+0

事實上,我已經改變了我的代碼限制。 –