时间:2010-07-26 14:50:12

标签: facebook

7 个答案:

答案 0 :(得分:4)

这取决于所使用的API。对于新的Graph API,单个对象将作为顶级对象返回:http://graph.facebook.com/naitik - 当集合返回时,顶级数据属性为Array:{{ 3}}。还有一些内省可以使事情变得更容易:http://graph.facebook.com/zuck/feedhttp://developers.facebook.com/docs/api#introspection是另一种流行的API调用,这是顶级响应是数组(想想SQL中的行),这就是为什么某些示例使用response[0]的原因。最简单的方法就是在浏览器中查看响应或通过卷曲查看响应,看看它是什么样的。

答案 1 :(得分:3)

只是为了澄清所有刚接触FB.api的人(就像我一样),图形查询返回不同形状的数据......这里有两个例子: FB.api('me/' function(returnData) { } )会将以下数据放入returnData

{
  "id": "592529630", 
  "name": "Hugh Abbott", 
  "first_name": "Hugh", 
  "last_name": "Abbott", 
  }

然后如果我说returnData.first_name我会得到“休”

但是,如果我的查询是关于我的朋友,我可能会运行以下查询 FB.api('me/friends/' function(returnData) { } ) 我的数据形状现在不同了:

 "data": [
    {
      "name": "Tom Bell", 
      "id": "36801805"
    }, 
    {
      "name": "Michael Royce", 
      "id": "199712888"
    }, 
]

...所以returnData现在是一个数组......为了检索值,我会做类似下面的事情。

returnData.data[0].name这将返回“汤姆贝尔”

我希望这会有所帮助,因为我花了几个小时想知道我哪里出错了......事实证明,这一切都是数据的形状!祝我的朋友好运。

答案 2 :(得分:2)

通常,JS SDK不返回JSON对象,但返回的结构类似于JSON对象。

比如说:一个是轮询用户事件数据,根据GRAPH API参考(http://developers.facebook.com/docs/reference/api/event),返回的数据将具有给定的属性{ {3}}

如果您使用PHP SDK

,事件数据的JSON对象将是这样的

Array([data] => Array([0] => Array([name] => sample event [start_time] => 2010-08-09T22:00:00 + 0000 [end_time] = > 2010-08-10T01:00:00 + 0000 [location] => at office \ [id] => xxxxxxxx [rsvp_status] =>参加))[paging] =>数组([previous] = >超链接[next] =>超链接))

但是如果你使用的是JS SDK,那么返回的响应将是这样的

response.data [0 ... n]。您正在访问的特定表的属性。 因此,在事件表的情况下,它将是这样的:

response.data [0 ... n] .name或response.data [0 ... n] .id,response.data [0 ... n] .end_time等

答案 3 :(得分:1)

这是否已被弄清楚了。没人接受任何东西。

alert("response[key]: " + response.data[i].Name);

上面的代码有Name而不是name。另外,正如Matti上面指出的那样,这有效:

response.data[0].name

只是我的两分钱。 @CoffeeAddict,接受答案以表示一些赞赏......似乎有人和你的代表会很感激。 :O)

答案 4 :(得分:0)

答案 5 :(得分:0)

答案 6 :(得分:0)

我确信这不应该是一个问题,因为Graph API explorer清楚地显示返回表单中的数据。您对响应结构的差异是正确的,但就个人而言,查看使用资源管理器返回的数据并使用相应的语法非常有用。