1

次の URL があります。

events_value = 新しい URL("https://graph.facebook.com/me/events?access_token="+access_token);

URL から次の応答が得られます。

https://graph.facebook.com/me/events?access_token=AAAAAAITEghMBAIBxLGB3PBYH3U5eF1reKAhNQQy85HWNuqGOl9NG2hsCCF8xLgMyc4bG51uo5dgt5c3M3UNcPnqhPVCtVZC4WVLveRmYRakas9AtQ

私はそれをJSONArrayに入れようとしました:

JSONArray jArray = new JSONArray(events_value);   //this where the problem comes     
final String[] array_spinner = new String[jArray.length()];
for(int i=0;i<jArray.length();i++){
    JSONObject json_data = jArray.getJSONObject(i);
    String jj=json_data.getString("name");
    array_spinner[i] = jj;         
}

配列の作成時に events_value を入力できません。

助けてください!

4

3 に答える 3

1

このコードはあなたを助けるかもしれません。これを試して。

        JSONArray jArray = null;

        try {
        JSONObject json;
        // getting JSON string from URL
        if (url != null) {
            json = jParser.getJSONFromUrl(url);
            System.out.println("reading from url" + json);
        }

        // Getting Array of jArray
        jArray = json.getJSONArray(TAG_NAME);

        // looping through All jArray
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject c = jArray.getJSONObject(i);
            Log.d(TAG_TYPE, c.getString(TAG_NAME));//print in log cat

        }
    } catch (JSONException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2012-12-04T07:20:38.393 に答える
1
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
    InputStream is = new URL(url).openStream();
    try {
      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
      String jsonText = readAll(rd);
      JSONObject json = new JSONObject(jsonText);
      return json;
    } finally {
      is.close();
    }
  }

....

次に、コード:

JSONArray jArray = (JSONArray) readJsonFromUrl(events_value);
final String[] array_spinner = new String[jArray.length()];
for(int i=0;i<jArray.length();i++){
    JSONObject json_data = jArray.getJSONObject(i);
    String jj=json_data.getString("name");
    array_spinner[i] = jj;         
}
于 2012-12-04T07:40:27.867 に答える
0

質問のタイプミスかもしれませんが、events_value は JSONArray ではなく URL 文字列であるため、間違いなく例外が発生します。関連する url s トークンの有効期限が切れているため、正確な応答を確認することはできませんが、応答が JSONObject または JSONArray であるかどうかを確認してみてください。JSONArray は、最初と最後に「[」と「]」を付ける必要があります。そうでない場合は、JSONObject です。

アップデート

応答文字列には、データ フィールドとページング フィールドがあります。したがって、データ フィールドは JSONArray とページング JSONObject です。データを取得するには、次のようなものを使用します。

JSONObject response = new JSONObject(responseString)
JSONArray data = response.getJSONArray("data");

次に、データ配列の各項目について、属性を解析します。

于 2012-12-04T07:17:08.330 に答える