org.json.JSONException:Value<类型java.lang.String无法转换为JSONObject

时间:2013-07-30 06:30:18

标签: android

我有这个代码并尝试运行但是它给了我“org.json.JSONException的异常:类型java.lang.String的值<无法转换为JSONObject”。任何帮助都会被批评。

代码:

private class MyTask extends AsyncTask<String, Integer, String> {

            @Override
            protected void onPostExecute(String result) {

                CreateAndAppendListLayout();

                super.onPostExecute(result);
            }

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub




                super.onPreExecute();
            }

            @Override
            protected void onProgressUpdate(Integer... values) {
                // TODO Auto-generated method stub
                super.onProgressUpdate(values);

            }

            @Override
            protected String doInBackground(String... params) {


                String myRespone = null;
                String url = params[0];
                HttpClient client = new DefaultHttpClient();

                HttpGet Get = new HttpGet(url);

                try {
                    HttpResponse response = client.execute(Get);

                    HttpEntity entity = response.getEntity();
                    myRespone = EntityUtils.toString(entity);

                } catch (ClientProtocolException e) {

                    e.printStackTrace();

                    Log.e("My webservice Response", "ClientProtocolException");

                } catch (IOException e) {

                    Log.e("My webservice Response", "IOException");

                    e.printStackTrace();
                }
                JSONObject jsonObj;

                if (myRespone != null) {
                    try {



                        jsonObj = new JSONObject(myRespone);
                        JSONArray jsonArray = jsonObj.getJSONArray("Results");


                        for (int i = 0; i <= jsonArray.length() - 1; i++) {
                            myList.add(jsonArray.getJSONObject(i));

                        }



                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } else {
                    // do nothing
                }
                return null;
            }

        }

服务器上的我的JSON:

{
  "Results": [
    {
      "id": "10",
      "CID": "60607",
      "userName": "Jones",
      "userr": "hard work",
      "st": "4"
    },
    {
      "id": "8",
      "CID": "60807",
      "userName": "Aaali",
      "userr": "Good Service ",
      "st": "5"
    },
    {
      "id": "9",
      "CID": "65507",
      "userName": "Jan",
      "userr": "Happy, Cost effective ",
      "st": "5"
    }
  ]
}

logcat的:

07-30 11:15:24.570: W/System.err(8247): org.json.JSONException: Value < of type java.lang.String cannot be converted to JSONObject
07-30 11:15:24.570: W/System.err(8247):     at org.json.JSON.typeMismatch(JSON.java:111)
07-30 11:15:24.570: W/System.err(8247):     at org.json.JSONObject.<init>(JSONObject.java:158)
07-30 11:15:24.570: W/System.err(8247):     at org.json.JSONObject.<init>(JSONObject.java:171)
07-30 11:15:24.570: W/System.err(8247):     at com.example.myclass$MyTask.doInBackground(User_Reviews.java:484)
07-30 11:15:24.570: W/System.err(8247):     at com.example.myclass$MyTask.doInBackground(User_Reviews.java:1)
07-30 11:15:24.570: W/System.err(8247):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-30 11:15:24.570: W/System.err(8247):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-30 11:15:24.570: W/System.err(8247):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-30 11:15:24.575: W/System.err(8247):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-30 11:15:24.575: W/System.err(8247):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-30 11:15:24.575: W/System.err(8247):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-30 11:15:24.575: W/System.err(8247):     at java.lang.Thread.run(Thread.java:856)

2 个答案:

答案 0 :(得分:1)

检查服务响应代码并仅在其为200时解析JSON,否则可能是错误。 在你的情况下,它发送HTML代码,因此崩溃

答案 1 :(得分:0)

您尝试解析的JSON字符串可能无效,但它有一些raw HTML(< like),这意味着它生成错误,或者PHP正在插入errors/warnings并摧毁字符串