2013-02-23 52 views
0
@Override 
    protected Integer doInBackground(Void... params) 
    { 
     String readMyJSON = readMyJSON(); 
       try { 
        JSONArray jsonArray = new JSONArray(readMyJSON);      
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
     return 0; 
    } 

这不起作用,在JSONArray jsonArray = new JSONArray(readMyJSON);期间发生JSONException。有人能告诉我问题在哪里吗?提前致谢。AsyncTask中的JSONException

P.S:方法一用:

public String readMyJSON() 
    { 
     StringBuilder builder = new StringBuilder(); 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet("http://search.twitter.com/search.json?q=android"); 
     try { 
      HttpResponse response = client.execute(httpGet); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       builder.append(line); 
      } 
      } else { 
      Log.e(ParseJSON.class.toString(), "Failed to download file"); 
      } 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return builder.toString(); 
     } 

这种方法似乎还好吧。

+0

你从readMyJSON()得到的输出是什么? – 2013-02-23 22:18:41

回答

2

总之,twitter的响应不是JSON数组,所以你会得到一个异常。如果你想要的结果的阵列,请执行以下操作:

JSONObject object = (JSONObject) new JSONTokener(json).nextValue(); 
JSONArray results = object.getJSONArray("results"); 

我建议你阅读Twitter API docs。具体而言,https://dev.twitter.com/docs/api/1/get/search

+0

我想这样做是为了学习如何使用JSON。我仅以此搜索结果为例。看来它现在在工作,谢谢。 – Tom11 2013-02-24 13:37:26

0

你可以试试这个:

JSONArray jsonArray = new JSONArray("["+readMyJSON+"]"); 

我希望它应该工作。