【问题标题】:Extracting data from a json sibling?从json兄弟中提取数据?
【发布时间】:2011-06-14 22:28:29
【问题描述】:

来自 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 是专辑标题的兄弟。

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

【问题讨论】:

    标签: jquery json api siblings


    【解决方案1】:

    对象都是同一个“父”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');
      }
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2019-07-25
    • 2019-08-29
    相关资源
    最近更新 更多