答案 0 :(得分:4)
这取决于所使用的API。对于新的Graph API,单个对象将作为顶级对象返回:http://graph.facebook.com/naitik - 当集合返回时,顶级数据属性为Array
:{{ 3}}。还有一些内省可以使事情变得更容易:http://graph.facebook.com/zuck/feed。 http://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清楚地显示返回表单中的数据。您对响应结构的差异是正确的,但就个人而言,查看使用资源管理器返回的数据并使用相应的语法非常有用。