2012-01-12 56 views
2

我尝试通过JSON.NET解析JSON,并且在App类中是可以的,但是如果我想在自定义类中写入解析方法,VS在JEnumerable<JToken>对象中看不到方法ToList()如何看JEnumerable <JToken>对象中的Children()。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()'?也许你可以用'var'替换'IList ',并移除'ToList()'。 – jv42 2012-01-12 10:13:35

+0

谢谢,它的作品! – 2012-01-12 10:29:24

+0

我会将它作为答案发布:) – jv42 2012-01-12 10:35:11

回答

2

你不需要在这里使用ToList()

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

这将产生一个可枚举(懒惰)收集与下方的foreach使用。

注意:我使用var,因为我不知道这里返回的确切类型,但我们并不真正关心它,它可能相当复杂,所以这非常有用。

1

由于我无法评论jv42的答案,因为我不喜欢匿名类型,所以我会根据他的答案构建一下。

你不应该需要使用.ToList()如上所述,其结果将成为JEnumerable可以是foreach“编过:

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

foreach(JToken result in results) 
{ 
    Console.WriteLine(result.ToString()); 
} 
相关问题