我在从twitter搜索Feed解析json时遇到问题。例如,搜索网址是:
https://search.twitter.com/search.json?q=android
我想在json数据中获取“result”数组。我的fetch json和parse的代码:
StringBuilder tweetFeedBuilder = new StringBuilder();
HttpClient tweetClient = new DefaultHttpClient();
//pass search URL string to fetch
HttpGet tweetGet = new HttpGet(searchURL);
//execute request
HttpResponse tweetResponse = tweetClient.execute(tweetGet);
//check status, only proceed if ok
StatusLine searchStatus = tweetResponse.getStatusLine();
if (searchStatus.getStatusCode() == 200) {
//get the response
HttpEntity tweetEntity = tweetResponse.getEntity();
InputStream tweetContent = tweetEntity.getContent();
//process the results
InputStreamReader tweetInput = new InputStreamReader(tweetContent);
BufferedReader tweetReader = new BufferedReader(tweetInput);
while ((lineIn = tweetReader.readLine()) != null)
{
tweetFeedBuilder.append(lineIn);
}
try{
// A Simple JSONObject Creation
JSONObject json=new JSONObject(tweetFeedBuilder);
Log.i("Tweets","<jsonobject>\n"+json.toString()+"\n</jsonobject>");
String str1 = "result";
JSONArray jarray = json.getJSONArray(str1);
for(int i = 0; i < jarray.length(); i++){
JSONObject c = jarray.getJSONObject(i);
String id = c.getString(TWEET_ID);
String text = c.getString(TWEET_TEXT);
}
}
catch(JSONException jexp){
jexp.printStackTrace();
}
创建JSON对象后,JSONArray在创建时出错并进入catch块。实际上我想从JSON数据中获取“result”数组。
但是在创建时遇到了错误。我只想从JSON数据中获取user_id和文本。 我在android平台和eclipse sdk工作。
答案 0 :(得分:1)
正如评论中已经提到的,您使用了错误的密钥。它应该是
String str1 = "results"; // you are using result
答案 1 :(得分:0)
(刚刚详细说明我的评论......)
如果仔细查看JSON响应,结果数组的关键不是result
,而是results
。因此,您应该通过以下方式获取JSONArray:
JSONArray jarray = json.getJSONArray("results");
另外,我注意到你想从每个数组项中获取“user_id”和“text”。请务必为用户使用正确的密钥:from_user_id
。