Java android解析数据org.json.JSONException时出错

Java android解析数据org.json.JSONException时出错,java,android,json,Java,Android,Json,我有两个网址 如果我通过我的android活动运行第一个,那么结果将毫无问题地加载到我的列表中。 但是如果我运行第二个URL,那么我就会得到这个错误 05-30 16:20:30.473: ERROR/JSON Parser(1740): Error parsing data org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject 05-30 16:20:

我有两个网址

  • 如果我通过我的android活动运行第一个,那么结果将毫无问题地加载到我的列表中。 但是如果我运行第二个URL,那么我就会得到这个错误

    05-30 16:20:30.473: ERROR/JSON Parser(1740): Error parsing data org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject
    05-30 16:20:30.633: ERROR/AndroidRuntime(1740): FATAL EXCEPTION: AsyncTask #1
            java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:278)
            at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
            at java.util.concurrent.FutureTask.run(FutureTask.java:137)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:856)
            Caused by: java.lang.NullPointerException
            at com.supremosolutions.wimp.AroundMeParking$LoadInbox.doInBackground(AroundMeParking.java:162)
            at com.supremosolutions.wimp.AroundMeParking$LoadInbox.doInBackground(AroundMeParking.java:138)
            at android.os.AsyncTask$2.call(AsyncTask.java:264)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
            ... 5 more   
    
    我已经通过json验证器运行了这两个URL,比如和

    代码似乎在
    jsonParser.makeHttpRequest上中断:

    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        JSONObject json = jsonParser.makeHttpRequest(callableUrl, "GET", params);
        // Check your log cat for JSON response
        Log.d("JSON FOR LOGCAT: ", json.toString());
    
    受保护的字符串doInBackground(字符串…args){
    //建筑参数
    List params=new ArrayList();
    JSONObject json=jsonParser.makeHttpRequest(callableUrl,“GET”,params);
    //检查日志cat中的JSON响应
    d(“LOGCAT的JSON:,JSON.toString());
    
    有时我可以在LOGCAT中看到LOGCAT的JSON字符串,它看起来是这样的(尽管仍然会崩溃,但有一个异常),但有时该字符串甚至没有进入LOGCAT


    这里的问题是什么?我如何解决它?

    我拥有的jsonParser类附加了参数。我已经添加了基本url+参数,因此发送的url无效。 而不是像这样发送我的URL

    我必须像发送一样发送它,然后添加NameValuePair参数以传递到我的jsonParser类中

            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("format", "json"));
            params.add(new BasicNameValuePair("format", "json"));
            params.add(new BasicNameValuePair("format", "json"));
            JSONObject json = jsonParser.makeHttpRequest(URL, "GET", params);
    
    //建筑参数
    List params=new ArrayList();
    添加(新的BasicNameValuePair(“格式”、“json”);
    添加(新的BasicNameValuePair(“格式”、“json”);
    添加(新的BasicNameValuePair(“格式”、“json”);
    JSONObject json=jsonParser.makeHttpRequest(URL,“GET”,参数);
    

    正如Ken Y-N和Alex提到的,此错误是由无效的url引起的。如果您收到此错误,请仔细检查您是如何创建url的,并查看发送的确切内容

    jsonParser是如何定义的。makeHttpRequest
    请发布该代码。根据推测,它会返回一个
    对象
    ,但在某些情况下该
    对象
    是一个
    字符串
    ,可能是一条错误消息?类型为java.lang.String的异常消息
    值无效
    表示该字符串
    无效
    。您的URL是否正确?您是否可以调试HTTP请求和响应。我认为响应类似于
    无效…
    ,因此JSON解析器无法从中创建JSONObject。@KenY-N问题在于我在jsonParser.makeHttpRequest中添加参数的方式。我给出了整个URL带参数的字符串,但实际上我需要使用
    params
    变量将其追加,否则我会在URL末尾额外获得一个“?”。这会破坏应用程序。请在下面填写答案,我会将其标记为答案。