JSONObject捕获异常

时间:2012-12-28 11:47:18

标签: android json

亲爱的我是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;
    }
}

5 个答案:

答案 0 :(得分:2)

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

 jArray = new JSONArray(result);

这可能对你有帮助。

答案 1 :(得分:0)

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

尝试:

jArray = new JSONArray(result); 

jArray = new JSONObject(result); 

按如下方式记录您的错误:

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

您将获得有关问题的内容和位置的更详细说明

Json Array API

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

 [ ]

然后使用JSONArray

如果String以这些括号{}开头,那么JSONObject应该使用。

我认为这个区域的反应不会响应然后尝试代替

 HttpGet httpget = new HttpGet(url);

替换

HttpPost post=new HttpPost(url);

答案 4 :(得分: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");
    }
希望这会帮助你。