您好我不断收到此错误,我正试图通过JSON从Twitter获取推文,似乎无法在“arr”上摆脱这一点。我是否必须做一个不同的for循环?我确实尝试了这个,但它仍然会返回相同的错误。
public ArrayList<Tweet> getTweets(String searchTerm, int page) {
String searchUrl =
"http://search.twitter.com/search.json?q=@"
+ searchTerm + "&rpp=100&page=" + page;
ArrayList<Tweet> tweets =
new ArrayList<Tweet>();
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(searchUrl);
ResponseHandler<String> responseHandler =
new BasicResponseHandler();
String responseBody = null;
try {
responseBody = client.execute(get, responseHandler);
} catch(Exception ex) {
ex.printStackTrace();
}
JSONObject jsonObject = null;
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(responseBody);
jsonObject=(JSONObject)obj;
}catch(Exception ex){
Log.v("TEST","Exception: " + ex.getMessage());
}
JSONArray<Object> arr = null;
try {
Object j = jsonObject.get("results");
arr = (JSONArray)j;
} catch(Exception ex){
Log.v("TEST","Exception: " + ex.getMessage());
}
for(Object t : arr) {
Tweet tweet = new Tweet(
((JSONObject)t).get("from_user").toString(),
((JSONObject)t).get("text").toString(),
((JSONObject)t).get("profile_image_url").toString()
);
tweets.add(tweet);
}
return tweets;
}
请帮助!!
答案 0 :(得分:4)
正如例外所述,您只能在java.lang.Iterable
的实例上使用for循环进行迭代。 JSONArray
不是其中之一。
使用“classic”for循环:
for(int i = 0; i < arr.length(); i++) {
JSONObject t = (JSONObject) arr.get(i);
Tweet tweet = new Tweet(
t.get("from_user").toString(),
t.get("text").toString(),
t.get("profile_image_url").toString()
);
tweets.add(tweet);
}
答案 1 :(得分:1)
JSONArray
未实施Iterable
。使用length
和get
访问其中的成员(请参阅here)
int count = arr.length();
for (int i=0;i<count;++i) {
string s = arr.getString(i);
}