这么长的故事短我有一个android应用程序,我用cocos2dx来开发它。我正在努力的一个组件是将我的Facebook朋友带入我的游戏。我这样做的方式是在本机(Java)我安装我的Facebook的SDK。我成功登录并且毫无问题地拉下我的朋友列表。我的问题是,我需要将这些数据转发到C++端,以便我可以访问数据并将其带入标签等。用Jannson JSON阅读器阅读Facebook响应
这里我猜想一些结构是如何发生的: Java本机 - 启动活动,登录Facebook,结识朋友 - > STRING DATA JNI TO C++ - > CPP用Jannson解析JSON数据。
我的问题是,如果我有这样一个简单的数据:
[
{
"pic_square": "https://www.facebook.com/blah",
"uid": 4654546445,
"name": "somename"
}
]
我可以分析,没有问题,但在现实中有什么Facebook的回应是这样的:
{
Response: responseCode: 200,
graphObject: GraphObject{
graphObjectClass=GraphObject,
state={
"data": [
{
"pic_square": "https://www.facebook.com/blah",
"uid": 4654546445,
"name": "somename"
}
]
}
}
}
由于Jansson未能说明它不是数组(确切的错误是“错误:root不是数组”)。 不知道如何处理这个。我应该以某种方式解析出“数据”之后的东西:然后找出正确地停止或有更好的方法。
谢谢!
你有可能从[Jannson教程](https://github.com/akheron/jansson/blob/master/doc/tutorial.rst)复制粘贴了一些代码?该示例适用于Json数组(与第一个片段一样;用方括号表示)。然而,Facebook的回应只是一个单一的对象。它在层次结构的某个点包含一个数组('data'),但您需要首先解析顶层的东西才能到达那里。基本上你现在试图将一个单一的对象映射到一个数组上 - 这也是错误所在。 – 2013-03-24 18:18:40
是的,我从Jannson教程中取出代码,然后修改它来提取整数。该教程只抓取字符串。所以我想我需要弄清楚如何在“data:[...]”之后抓取这些东西,并确保我停在正确的支架上。反正谢谢你的回复! – kub 2013-03-24 18:33:15
不是Facebook的专家,但对于特定的调用/响应将字符串分隔符设置为等于“]”和“[”来提取数据是安全的。这太危险了吗? – kub 2013-03-24 22:50:46