将URL数据插入JSONArray

时间:2012-12-04 07:05:59

标签: android arrays json

我有以下网址:

events_value =新网址(“https://graph.facebook.com/me/events?access_token=”+ access_token);

网址给出了以下回复:

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。

请帮忙!

3 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分: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;         
}

答案 2 :(得分:0)

你的问题可能是拼写错误但是events_value是一个不是JSONArray的URL字符串,所以你肯定会得到异常。由于相关的url s令牌已过期,我无法看到确切的响应,但请检查响应是JSONObject还是JSONArray。 JSONArray必须在开头和结尾处'['和']',否则它是JSONObject。

<强>更新

响应字符串包含数据和分页字段。所以数据字段是JSONArray和分页JSONObject。要检索数据,请使用以下内容:

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

然后,对于数据阵列上的每个项目,解析属性。