我尝试通过JSON.NET解析JSON,并且在App类中可以,但是如果我想在自定义类中使用write parse方法,则VS在ToList()
对象中看不到方法JEnumerable<JToken>
。 / p>
清单:
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'确实如此 不包含'ToList'的定义,也没有扩展方法'ToList' 接受第一个类型的参数 'Newtonsoft.Json.Linq.JEnumerable'可以 找到(你错过了使用指令或汇编引用吗?)
答案 0 :(得分:4)
您无需在此处使用ToList()
。
var results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children();
这将产生一个可用于下面的foreach
的Enumerable(懒惰)集合。
注意:我正在使用var,因为我不知道这里返回的确切类型,但我们并不真正关心它,它可能非常复杂,所以这非常有用。
答案 1 :(得分:2)
由于我无法对jv42的答案发表评论,因为我不喜欢匿名类型,所以我会基于他的答案。
如上所述,您不需要使用.ToList()
,结果将变为JEnumerable
,可以foreach
通过:{/ p>
JEnumerable results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children();
foreach( JToken result in results )
{
Console.WriteLine(result.ToString());
}