2013-10-15 70 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; 
    }