Извлечение данных из брата JSON? - PullRequest
2 голосов
/ 15 июня 2011

Некоторые json из picasaweb: http://picasaweb.google.com/data/feed/api/user/100489095734859091829?kind=album&access=visible&alt=json-in-script&thumbsize=144c

Вот вывод, приведенный в порядке jsonview - оба они появляются на одном и том же «уровне», но несколько ветвей вниз по дереву (я действительно не знаю)get "json еще - можете ли вы сказать?!).

gphoto$id: {
$t: "5068801490268828641"
},
gphoto$name: {
$t: "ByronBay"
}

Я хочу сказать" учитывая имя gphoto $ ByronBay, я хотел бы получить его идентификатор gphoto $, пожалуйста! ".

Я нашел пару хороших браузеров json;один онлайн Java: http://pivot.apache.org/demos/json-viewer.html и расширение Firefox / Chrome: http://jsonview.com/

Тем не менее, ни один мудрый, хотя.Сценарий, который я пытаюсь использовать, http://oss.oetiker.ch/jquery/jquery.EmbedPicasaGallery.js, отличный, но он требует от пользователя идентификатора альбома, что означает открытие RSS и поиск правильного номера.Но в возвращенном json я вижу, что идентификатор альбома является родным по названию альбома.

Я могу найти все виды других способов получения «дочерних» данных от данного родителя, но я действительно рисую пробел, когда дело доходит до данных типа «брат-сестра», подобных этой.

1 Ответ

2 голосов
/ 15 июня 2011

Объекты оба являются членами одного и того же «родителя» json.feed.entry[index], так что вы можете пройти через json.feed.entry и проверить gphoto$name.$t

$.getJSON('http://picasaweb.google.com/data/feed/api/user/'+
          '100489095734859091829?kind=album&access=visible&'+
          'alt=json&thumbsize=144c&callback=?', 
function(data) {
for(var i=0;i<data.feed.entry.length;++i)
{
  if(data.feed.entry[i].gphoto$name.$t=='ByronBay')
  {
    alert(data.feed.entry[i].gphoto$id.$t);return;
  }
}
});

или использовать grep () jQuery:

$.getJSON('http://picasaweb.google.com/data/feed/api/user/'+
          '100489095734859091829?kind=album&access=visible&'+
          'alt=json&thumbsize=144c&callback=?', 
function(data) {

  arr = jQuery.grep(jQuery.makeArray( data.feed.entry ), function(a){
        return (a.gphoto$name.$t=='ByronBay');
        });
  if(arr.length)
  {
    alert(arr[0].gphoto$id.$t);
  }
  else
  {
    alert('no match');
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...