Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用FQL解析来自Facebook的JSON数据时出错_Android_Facebook_Facebook Fql_Facebook Android Sdk - Fatal编程技术网

Android 使用FQL解析来自Facebook的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

我试图在Android应用程序中使用FQL解析从Facebook API获取的结果(JSON)

我已经能够解析除此部分之外的所有结果集:

[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。因为我差点把它钉死。也许是我的错没有提到我需要将数据提取为字符串。