2011-06-14 133 views
2

从Picasa网络相册的一些JSON: http://picasaweb.google.com/data/feed/api/user/100489095734859091829?kind=album&access=visible&alt=json-in-script&thumbsize=144c从json兄弟姐妹提取数据?

这里是由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是专辑标题的兄弟。

我可以找到从给定的父母获得“孩子”数据的各种其他方式,但是当涉及到像这样的兄弟姐妹数据时,我真的画了一个空白。

回答

2

的对象是同一个 '父' 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'); 
    } 
}); 
+0

辉煌!我一直听到关于json是多么容易和改进的问题,但我从来没有想过这个问题。以为我必须穿过一棵树。无论如何,在您的帮助下,我现在可以让用户在我们的论坛中张贴图片。代码:http://pastebin.com/ZTyBreaR bbcodes for phpbb:http://www.phpbb.com/community/viewtopic.php?p=13009040#p13009040演示:http://www.reading-forum.co。 uk/forum/viewtopic.php?f = 20&t = 6536&p = 63321#p63321。如果没有你,不可能做到! – digitaltoast 2011-06-15 10:30:40