0

我正在使用 YQL 的 query.multi 来获取多个提要,因此我可以使用 jQuery 解析单个 JSON 提要并减少我正在建立的连接数量。为了解析单个提要,我需要能够检查结果的类型(照片、项目、条目等),以便我可以以特定方式提取项目。由于项目嵌套在 JSON 提要中的方式,我不确定循环遍历结果并检查类型然后循环遍历项目以显示它们的最佳方式。

这是一个 YQL ( http://developer.yahoo.com/yql/console/ ) query.multi 示例,您可以看到三种不同的结果类型(条目、照片和项目)以及嵌套在其中的项目:

select * from query.multi where queries=
    "select * from twitter.user.timeline where id='twitter';  
     select * from flickr.photos.search where has_geo='true' and text='san francisco';
     select * from delicious.feeds.popular"

或者这里是 JSON 提要本身:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20query.multi%20where%20queries%3D%22select%20*%20from%20flickr.photos.search%20where%20user_id%3D'23433895%40N00'%3Bselect%20*%20from%20delicious.feeds%20where%20username%3D'keith.muth'%3Bselect%20*%20from%20twitter.user.timeline%20where%20id%3D'keithmuth'%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=

我正在使用 jQuery 的 $.getJSON 方法

4

1 回答 1

1

您不需要手动解析 JSON。这就是 JSON 的意义所在。用于JSON.parse(yourJSONstring)将其转换为 Javascript 对象。

编辑:实际上我不确定浏览器是否支持该浏览器。这是jQuery方式:

http://api.jquery.com/jQuery.parseJSON/

编辑2:

var results = feedObj.query.results.results
for (var i = 0; i < results.length; i++) {
  if (results[i].photo) {
    // do something with photos
  } else if (results[i].item) {
    // do something with items
  } else {
    // do something with entry
  }
}

测试对象是否存在results[i].photo。如果存在,则结果是一个数组,您可以循环并对其执行某些操作。

于 2010-05-18T13:57:25.207 回答