java.lang.String无法转换为JSONObject

时间:2016-04-20 08:23:08

标签: android json

我在从服务器检索特定数据时遇到问题这是我的代码,任何人都有任何想法

enter code herepublic String URL_ITEMS = "http://getdoctor.comlu.com/aa.php?name=Naveed";
private static final String TAG_FIXTURE = "checker";
private static final String TAG_MATCHID = "dphone";
private static final String TAG_TEAMA = "pphone";

这是Josn代码`这里输入代码私有类GetFixture扩展AsyncTask {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected Void doInBackground(Void... arg) {


        ServiceHandler serviceClient = new ServiceHandler();
        Log.d("url: ", "> " + URL_ITEMS);
        String json = serviceClient.makeServiceCall(URL_ITEMS,ServiceHandler.GET);
        // print the json response in the log
        Log.d("Get match fixture resps","> " + json);
        if (json != null) {
            try {
                Log.d("try", "in the try");
                JSONObject jsonObj = new JSONObject(json);
                Log.d("jsonObject", "new json Object");
                // Getting JSON Array node
                matchFixture = jsonObj.getJSONArray(TAG_FIXTURE);
                Log.d("json aray", "user point array");
                int len = matchFixture.length();
                Log.d("len", "get array length");
                for (int i = 0; i < matchFixture.length(); i++) {
                    JSONObject c = matchFixture.getJSONObject(i);
                    String matchId = c.getString(TAG_MATCHID);
                    Log.d("matchId", matchId);
                    String teamA = c.getString(TAG_TEAMA);
                    Log.d("teamA", teamA);

                    //  hashmap for single match
                    HashMap<String, String> matchFixture = new HashMap<String, String>();
                    // adding each child node to HashMap key => value
                    matchFixture.put(TAG_MATCHID, matchId);
                    matchFixture.put(TAG_TEAMA, teamA);

                    matchFixtureList.add(matchFixture);
                }
            }
            catch (JSONException e) {
                Log.d("catch", "in the catch");
                e.printStackTrace();
            }
        } else {
            Log.e("JSON Data", "Didn't receive any data from server!");
        }
        return null;
    }'

这是我的logcat任何机构都知道我为什么会收到此错误

enter code hereD/url:: > http://getdoctor.comlu.com/aa.php?name=Naveed
04-20 13:12:33.901 32106-32287/com.example.finddoctor D/Get match fixture resps: > Naveed{"checker":[{"pphone":""},{"pphone":"1"},{"pphone":"1"},{"pphone":"5415"},{"pphone":"5415"},{"pphone":"5415"}]}
04-20 13:12:33.901 32106-32287/com.example.finddoctor D/try: in the try
04-20 13:12:33.911 32106-32287/com.example.finddoctor D/catch: in the catch
04-20 13:12:33.911 32106-32287/com.example.finddoctor W/System.err: org.json.JSONException: Value Naveed of type java.lang.String cannot be converted to JSONObject
04-20 13:12:33.911 32106-32287/com.example.finddoctor W/System.err:     at org.json.JSON.typeMismatch(JSON.java:107)
04-20 13:12:33.911 32106-32287/com.example.finddoctor W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:158)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at org.json.JSONObject.<init>(JSONObject.java:171)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at com.example.finddoctor.Doctor_notification$GetFixture.doInBackground(Doctor_notification.java:199)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at com.example.finddoctor.Doctor_notification$GetFixture.doInBackground(Doctor_notification.java:181)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-20 13:12:33.921 32106-32287/com.example.finddoctor W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-20 13:12:33.931 32106-32287/com.example.finddoctor W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-20 13:12:33.931 32106-32287/com.example.finddoctor W/System.err:     at java.lang.Thread.run(Thread.java:1019)`

2 个答案:

答案 0 :(得分:2)

从行

看来
Log.d("Get match fixture resps","> " + json);

和来自logcat

  

获取匹配夹具resps:&gt;   函数naveed { “检查”:[{ “pphone”: “”},{ “pphone”: “1”},{ “pphone”: “1”},{ “pphone”: “5415”},{ “pphone” : “5415”},{ “pphone”: “5415”}]}

你的json

Naveed{"checker":[{"pphone":""},{"pphone":"1"},{"pphone":"1"},{"pphone":"5415"},{"pphone":"5415"},{"pphone":"5415"}]}

是InValid。从it.i.e中删除 Naveed 。有效的json将是

{"checker":[{"pphone":""},{"pphone":"1"},{"pphone":"1"},{"pphone":"5415"},{"pphone":"5415"},{"pphone":"5415"}]}

您可以在http://jsonlint.com/

上查看

答案 1 :(得分:1)

你得到的回答是不正确的json。

Naveed{"checker":[{"pphone":""},{"pphone":"1"},{"pphone":"1"},{"pphone":"5415"},{"pphone":"5415"},{"pphone":"5415"}]}

需要像这样的回应

{"checker":[{"pphone":""},{"pphone":"1"},{"pphone":"1"},{"pphone":"5415"},{"pphone":"5415"},{"pphone":"5415"}]}