Разбор JSON-ленты из YQL с использованием jQuery - PullRequest
0 голосов
/ 18 мая 2010

Я использую YQL query.multi для захвата нескольких каналов, чтобы я мог анализировать один канал JSON с помощью jQuery и сократить количество создаваемых подключений. Чтобы проанализировать отдельный канал, мне нужно иметь возможность проверить тип результата (фотография, элемент, запись и т. Д.), Чтобы можно было извлекать элементы определенным образом. Из-за того, что элементы вложены в фид 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

1 Ответ

1 голос
/ 18 мая 2010

Вам не нужно анализировать JSON вручную.В этом суть JSON.Используйте JSON.parse(yourJSONstring), чтобы преобразовать его в объект Javascript.

Редактировать: На самом деле я не уверен, что браузер поддерживает это.Вот способ jQuery:

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

Edit2:

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.Если он существует, результатом является массив, который вы можете перебрать и сделать с ним что-то.

...