2012-01-12 8 views
2

私はJSON.NETでJSONを解析しようとしていますが、AppクラスでOKですが、カスタムクラスに書き込みメソッドを書きたい場合は、ToList()JEnumerable<JToken>オブジェクトにメソッドが表示されません。Children()。JEnumerable <JToken>オブジェクトのToList()メソッドの表示方法

リスト:

JObject newsResponse = JObject.Parse(e.Result); 
IList<JToken> results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children().ToList(); //Here don't see ToList() 
List<News> newsResults = new List<News>(); 

foreach (JToken result in results) 
{ 
    News searchResult = JsonConvert.DeserializeObject<News>(result.ToString()); 
    newsResults.Add(searchResult); 
} 

エラー:

'Newtonsoft.Json.Linq.JEnumerable' does not contain a definition for 'ToList' and no extension method 'ToList' accepting a first argument of type 'Newtonsoft.Json.Linq.JEnumerable' could be found (are you missing a using directive or an assembly reference?)

+0

は、なぜあなたは 'ToListメソッド()'が必要なのでしょうか? 'IList 'を 'var'で置き換え、' ToList() 'を削除することもできます。 – jv42

+0

ありがとう、それは動作します!!!! –

+0

私は答えとして投稿します:) – jv42

答えて

2

あなたがここにToList()を使用する必要はありません。

var results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children(); 

これは、下記のおforeachで使用可能な列挙(怠け者)のコレクションを生成します。

注:ここで返される型がわからないのでvarを使用していますが、実際には気にしません。かなり複雑なので、本当に便利です。

1

私はjv42の回答にコメントできません。匿名の種類が好きではないので、私は少し彼の答えに基づいて構築します。

あなたは、上記のように.ToList()を使用する必要はありません、との結果が「foreachすることができJEnumerableが通じ編になります:

JEnumerable results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children(); 

foreach(JToken result in results) 
{ 
    Console.WriteLine(result.ToString()); 
} 
関連する問題