【问题标题】:org.json.JSONException: Value < of type java.lang.String cannot be converted to JSONObjectorg.json.JSONException:Java.lang.String 类型的值 < 无法转换为 JSONObject
【发布时间】:2013-07-30 06:30:17
【问题描述】:

我有这段代码并尝试运行,但它给了我“org.json.JSONException:Java.lang.String 类型的值

代码:

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)

【问题讨论】:

  • 只需检查字符串是否有任何看不见的特殊字符等......
  • 您的 JSON 数据非常简单。我确信它包含特殊字符。检查您的 JSON 数据的有效性。使用此链接jsonlint.com

标签: android


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您尝试解析的 JSON 字符串可能无效,它有一些 raw HTML(&lt; like),这意味着它要么生成错误,要么 PHP 正在插入 errors/warnings 并销毁字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多