2

来自 picasaweb 的一些 json:http: //picasaweb.google.com/data/feed/api/user/100489095734859091829 ?kind=album&access=visible&alt=json-in-script&thumbsize=144c

这是 jsonview 整理的输出 - 这两个都出现在同一个“级别”上,但树上有几个分支(我真的还没有“得到”json - 你能告诉我吗?!)。

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

我想说“鉴于 gphoto$name 'ByronBay',我想要它的 gphoto$id!”。

我找到了几个不错的 json 浏览器;一个在线 Java: http: //pivot.apache.org/demos/json-viewer.html和一个 Firefox/Chrome 扩展:http: //jsonview.com/

尽管如此,仍然没有更聪明。我正在尝试使用的脚本http://oss.oetiker.ch/jquery/jquery.EmbedPicasaGallery.js很棒,但它需要用户提供专辑 ID,这意味着打开 RSS 并挖掘出正确的数字。但我在返回的 json 中看到,专辑 ID 是专辑标题的兄弟。

我可以找到从给定父级获取“子级”数据的各种其他方法,但是当涉及到这样的同级数据时,我真的是一片空白。

4

1 回答 1

2

这些对象都是同一个 'parent' 的成员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;
  }
}
});

或使用 jQuery 的 grep():

$.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');
  }
});
于 2011-06-14T23:04:11.133 回答