Android 使用FQL解析来自Facebook的JSON数据时出错
我试图在Android应用程序中使用FQL解析从Facebook API获取的结果(JSON) 我已经能够解析除此部分之外的所有结果集:Android 使用FQL解析来自Facebook的JSON数据时出错,android,facebook,facebook-fql,facebook-android-sdk,Android,Facebook,Facebook Fql,Facebook Android Sdk,我试图在Android应用程序中使用FQL解析从Facebook API获取的结果(JSON) 我已经能够解析除此部分之外的所有结果集: [10151392619250579,10151392618640579,10151392618590579,10151392618785579,10151392618835579,10151392618885579,10151392619010579,10151392619155579] 我正在进行的FQL查询是: SELECT app_data FROM
[10151392619250579,10151392618640579,10151392618590579,10151392618785579,10151392618835579,10151392618885579,10151392619010579,10151392619155579]
我正在进行的FQL查询是:
SELECT app_data FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid = me() AND type = 'newsfeed') AND is_hidden = 0 LIMIT 200
返回如下结果:
{
"app_data": {
"attachment_data": "[]",
"images": "[10151392619250579,10151392618640579,10151392618590579,10151392618785579,10151392618835579,10151392618885579,10151392619010579,10151392619155579]",
"photo_ids": [
"10151392619250579",
"10151392618640579",
"10151392618590579",
"10151392618785579",
"10151392618835579",
"10151392618885579",
"10151392619010579",
"10151392619155579"
]
}
}
这是我用来获取数据的代码:
// GET THE APP DATA
if (JOFeeds.has("app_data")) {
String strAppData = JOFeeds.getString("app_data");
if (strAppData.equals("[]")) {
// DO NOTHING
} else {
JSONObject JOAppData = new JSONObject(strAppData);
if (JOAppData.has("photo_ids")) {
String strPhotoIDS = JOAppData.getString("photo_ids");
JSONArray JAPhotoIDS = new JSONArray(strPhotoIDS);
Log.e("JAPhotoIDS", JAPhotoIDS.toString());
for (int j = 0; j < JAPhotoIDS.length(); j++) {
JSONObject JOPhotoIDS = JAPhotoIDS.getJSONObject(j);
Log.e("PHOTO IDS", JOPhotoIDS.toString());
}
}
}
}
很明显,我的编码是错的。有人能就正确的方法/代码提供一些建议吗?解析照片ID的部分是错误的,应该是这样的:
if (JOAppData.has("photo_ids")) {
JSONArray JAPhotoIDS = JOAppData.getJSONArray("photo_ids");
Log.e("JAPhotoIDS", JAPhotoIDS.toString());
for (int j = 0; j < JAPhotoIDS.length(); j++) {
String id = JAPhotoIDS.getString(j);
Log.e("PHOTO IDS", id);
}
}
if(JOAppData.has(“photo_id”)){
JSONArray JAPhotoIDS=JOAppData.getJSONArray(“photo_id”);
Log.e(“JAPhotoIDS”,JAPhotoIDS.toString());
对于(int j=0;j
解析照片ID的部分是错误的,应该是这样的:
if (JOAppData.has("photo_ids")) {
JSONArray JAPhotoIDS = JOAppData.getJSONArray("photo_ids");
Log.e("JAPhotoIDS", JAPhotoIDS.toString());
for (int j = 0; j < JAPhotoIDS.length(); j++) {
String id = JAPhotoIDS.getString(j);
Log.e("PHOTO IDS", id);
}
}
if(JOAppData.has(“photo_id”)){
JSONArray JAPhotoIDS=JOAppData.getJSONArray(“photo_id”);
Log.e(“JAPhotoIDS”,JAPhotoIDS.toString());
对于(int j=0;j
您的JSONArray JAPhotoIDS包含一个长
数组(不是JSONObject)。
所以用
JSONObject JOPhotoIDS = JAPhotoIDS.getJSONObject(j);
使用
您的JSONArray JAPhotoIDS包含一个
Long
(不是JSONObject)数组。
所以用
JSONObject JOPhotoIDS = JAPhotoIDS.getJSONObject(j);
使用
我的。我已经做了5个多小时了,你只花了一分钟。先生,你是个巫师。:-)在我接受这个答案之前,似乎有一个计时器。在那之前我可以问一个后续问题吗?谢谢。基本上,我将所有收集的数据添加到一个ArrayList中,
FQLFeedsData
是一个类,用于定义我的setter和getter(用于我的适配器)。如问题所示,某些结果具有多个ID。如何将一个结果集中的所有ID添加到数组并传递到适配器?或者我应该为此发布一个新问题吗?如果我理解得很好,您可以在类中定义字符串数组(String[]id
)FQLFeedsData
。如果这不是您想要的答案,请提出一个新问题,进一步解释您想要的内容。让我试一试。但我怀疑,如果出现任何问题,我最好还是发布一个新问题。谢谢你的帮助。我很感激。:-)我的。我已经做了5个多小时了,你只花了一分钟。先生,你是个巫师。:-)在我接受这个答案之前,似乎有一个计时器。在那之前我可以问一个后续问题吗?谢谢。基本上,我将所有收集的数据添加到一个ArrayList中,FQLFeedsData
是一个类,用于定义我的setter和getter(用于我的适配器)。如问题所示,某些结果具有多个ID。如何将一个结果集中的所有ID添加到数组并传递到适配器?或者我应该为此发布一个新问题吗?如果我理解得很好,您可以在类中定义字符串数组(String[]id
)FQLFeedsData
。如果这不是您想要的答案,请提出一个新问题,进一步解释您想要的内容。让我试一试。但我怀疑,如果出现任何问题,我最好还是发布一个新问题。谢谢你的帮助。我很感激。:-)+1.因为我差点把它钉死。也许是我的错,没有提到我需要将数据提取为字符串。+1。因为我差点把它钉死。也许是我的错没有提到我需要将数据提取为字符串。