问题描述
|
来自picasaweb的一些json:
http://picasaweb.google.com/data/feed/api/user/100489095734859091829?kind=album&access=visible&alt=json-in-script&thumbsize=144c
这是jsonview整理的输出-这两个都显示在同一\“ level \”上,但是树上有几个分支(我真的还没有\“ get \” 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是专辑标题的同级。
我可以找到从给定的父级获取“子级”数据的各种其他方式,但是当涉及到这样的同级数据时,我确实是一个空白。
解决方法
这些对象都是同一个\'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\');
}
});