Android JSONObject捕获异常

Android JSONObject捕获异常,android,json,Android,Json,亲爱的,我是Android新手,Json有个问题,这是我的代码。。。我调试它,一切都很好,但当它到达这个位置时,它跳到了捕捉块 jArray = new JSONObject(result); 所以它的返回为空 public class JSONfunctions { public static JSONObject getJSONfromURL(String url){ InputStream is = null; String result = "

亲爱的,我是Android新手,Json有个问题,这是我的代码。。。我调试它,一切都很好,但当它到达这个位置时,它跳到了捕捉块

jArray = new JSONObject(result);
所以它的返回为空

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

我猜JSON需要的是数组而不是对象

尝试:

不是

按如下方式记录错误:

 Log.e("log_tag", "Error parsing data ", e);
你会得到关于你的问题所在的更详细的描述


在解析结果之前,请先注销结果,检查其是否为有效的json字符串,如果您的Sring以这些括号开始,则可能不是

 [ ]
然后使用
JSONArray

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

我认为这是该地区否则的反应是不提交然后尝试代替

 HttpGet httpget = new HttpGet(url);
替换

HttpPost post=new HttpPost(url);

替换此项,因为JSONObject未转换为JSONArray

 jArray = new JSONArray(result);
这可能会对您有所帮助。

如下所示进行分析

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");
    }
JSONObject mainJSON=new JSONObject();
JSONArray jsonMainArr=mainJSON.getJSONArray(“结果”);
for(int i=0;i

希望这对您有所帮助。

显示结果Stringplz发布您从服务器获得的json字符串打印字符串结果,并粘贴到此处。这是结果[{“CompletionStatus”:2,“ContactMobile”:“962799407083”,“ContactPerson”:“William Erwin”,“Description”:“AS”,“Details”:“Testy CCCC”,“ScheduledDate”:“\/Date”(135690120000+0300)\/,“WorkOrderID”:206}]我的服务是HttpGet,不是post,我会试试JsonArray,我在理解如何解析Json方面有一些问题,你能帮我找到一个技巧吗……我会很感激:)有时候HttpGet不起作用,但在你的情况下它起作用了。。要检查JsonFormate是否正确,只需使用Jsonlint.com&它将从jArray=newjsonarray(result)解析;
 jArray = new JSONArray(result);
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");
    }