从 json 兄弟中提取数据?

发布于 2024-11-15 14:15:12 字数 1132 浏览 3 评论 0原文

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

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

Some json from picasaweb:
http://picasaweb.google.com/data/feed/api/user/100489095734859091829?kind=album&access=visible&alt=json-in-script&thumbsize=144c

Here's the output as tidied up by jsonview - these two both appear on the same "level", but several branches down the tree (I really don't "get" json yet - can you tell?!).

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

I want to say "given the gphoto$name 'ByronBay', I'd like its gphoto$id please!".

I found a couple of good json browsers; one online Java: http://pivot.apache.org/demos/json-viewer.html and a Firefox/Chrome extension: http://jsonview.com/

Still none the wiser though. The script I'm trying to use, http://oss.oetiker.ch/jquery/jquery.EmbedPicasaGallery.js, is great, but it demands an album ID from the user, which means opening the RSS and digging out the correct number. But I see in the returned json, that the album ID is a sibling of the album title.

I can find all sorts of other ways of getting "child" data from a given parent, but I'm really drawing a blank when it comes to sibling data like this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若有似无的小暗淡 2024-11-22 14:15:12

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

The objects are both members of the same 'parent' json.feed.entry[index] , so you may walk through json.feed.entry and check 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;
  }
}
});

or using jQuery's 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');
  }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文