2011-06-14 130 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