2013-10-15 100 views
0

我正在使用Eclipse,用於需要從URL讀取JSON文件的應用程序。JSON只讀取對象,沒有數組

我正在使用的代碼是這一個:

http://collegewires.com/android/2012/06/json-parsing-in-android/

好吧,我使用JSON讀取該文件的類被稱爲Parser.java:

package com.cw.json; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class Parser { 

    static InputStream is = null; 
    static JSONObject jsonObject = null; 
    static String json = ""; 
    // class constructor 
    public Parser() { 

    } 

    public JSONObject getJSONFromUrl(String url) { 

     // Making HTTP request 
     try { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent();   

     } catch (UnsupportedEncodingException exception) { 
      exception.printStackTrace(); 
     } catch (ClientProtocolException exception) { 
      exception.printStackTrace(); 
     } catch (IOException exception) { 
      exception.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sBuilder = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sBuilder.append(line + "\n"); 
      } 
      is.close(); 
      json = sBuilder.toString(); 
     } catch (Exception exception) { 
      exception.printStackTrace(); 
     } 

     // Parsing the string to a JSON object 
     try { 
      jsonObject = new JSONObject(json); 
     } catch (JSONException exception) { 
      exception.printStackTrace(); 
     } 

     // JSON String 
     return jsonObject; 

    } 
} 

我正在使用這段代碼讀取一個直接是ARRAY的JSON文件,但代碼給了我一個錯誤。

我的問題是:是否有可能讀取一個數組,而不是總是讀取一個對象? 也許使用另一個類?

+0

請發佈錯誤日誌。 –

+0

如果通過「也許使用另一個班級?」你的意思是另一個工具或庫,那麼這個問題的一部分就是堆棧溢出的主題:「問題要求我們推薦或找到一個工具,庫或最喜歡的非現場資源,因爲它們傾向於吸引堆棧溢出自以爲是的答案和垃圾郵件,而是描述問題以及迄今爲止解決問題所做的工作。「 –

+0

你應該看看[Jackson](http://jackson.codehaus.org/)。這是一個功能完備的JSON序列化/反序列化庫。 – jwismar

回答

0

嘗試修改您的Parser.java到這個,所以你gat陣列不是對象。並請給你買一本適合初學者的JAVA書,讓你學會如何說JAVA

public JSONArray getJSONFromUrl(String url) { 
    .... 
    static JSONArray jsonArray = null; 
    .... 
    // Parsing the string to a JSON Array 
    try { 
      jsonArray = new JSONArray(json); 
    } catch (JSONException exception) { 
      exception.printStackTrace(); 
    } 
    return jsonArray; 
    }