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が発生します。誰かが問題の場所を教えてもらえますか?前もって感謝します。

PS:私が使用する方法:

   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();
      }

この方法は大丈夫のようです。

4

2 に答える 2

2

つまり、Twitterからの応答はJSON配列ではないため、例外が発生します。結果の配列が必要な場合は、次のようにします。

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

TwitterAPIのドキュメントを読むことをお勧めします。具体的には、https://dev.twitter.com/docs/api/1/get/searchです。

于 2013-02-23T22:35:11.880 に答える
0

これを試すことができますか:

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

私はそれがうまくいくことを願っています。

于 2013-02-23T22:18:02.610 に答える