0

亲爱的,我是 Android 新手,我在 Json 中有一个问题,这是我的代码...我调试它,一切都很好,但是在到达这个语句时它跳到了 catch 块

jArray = new JSONObject(result);

所以它返回null ...

public class JSONfunctions {

    public static JSONObject getJSONfromURL(String url){
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        //http post
        try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpGet httpget = new HttpGet(url);
                HttpResponse response = httpclient.execute(httpget);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();

        }catch(Exception e){
                Log.e("log_tag", "Error in http connection "+e.toString());
        }

      //convert response to string
        try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();
        }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
        }

        try{

            jArray = new JSONObject(result);            
        }catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

        return jArray;
    }
}
4

5 回答 5

2

替换它,因为 JSONObject 未转换为 JSONArray

 jArray = new JSONArray(result);

这可能会对您有所帮助。

于 2012-12-28T12:00:48.903 回答
0

我猜你的 JSON 需要一个数组而不是对象。

尝试:

jArray = new JSONArray(result); 

不是

jArray = new JSONObject(result); 

像这样记录您的错误:

 Log.e("log_tag", "Error parsing data ", e);

你会得到更详细的描述你的问题是什么和在哪里

Json 数组 API

于 2012-12-28T11:49:38.367 回答
0

注销您的结果,然后再解析它以检查是否是有效的 json 字符串,也许不是

于 2012-12-28T11:51:49.977 回答
0

如果您的 Sring 以这些括号开头

 [ ]

然后使用JSONArray

如果字符串以这些括号开头,则应{}使用JSONObject

我认为这是该地区否则没有回应然后尝试代替

 HttpGet httpget = new HttpGet(url);

代替

HttpPost post=new HttpPost(url);
于 2012-12-28T11:57:41.850 回答
0

解析如下图

JSONObject mainJSON = new JSONObject();

    JSONArray jsonMainArr = mainJSON.getJSONArray("result");
    for (int i = 0; i < jsonMainArr.toArray().length; i++) {
        JSONObject childJSONObject = jsonMainArr.getJSONObject(i);
        String CompletionStatus= childJSONObject.getString("CompletionStatus");
        String ContactMobile= childJSONObject.getString("ContactMobile");
    }

希望这会帮助你。

于 2012-12-28T12:14:25.390 回答