android错误解析数据org.json.JSONException

时间:2012-06-08 07:36:50

标签: java android json

我有两个网址。

  1. https://wimp.supremosolutions.com/api/v1/spot/?format=json
  2. https://wimp.supremosolutions.com/api/v1/spot/?format=json&latitude=45.200375&longitude=9.992465000000001
  3. 如果我通过我的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验证器(例如http://jsonlint.com/)运行这两个网址,并且都验证了。

    代码似乎打破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());
    

    有时我可以在Logcat中看到JSON FOR LOGCAT字符串,它看起来像这个http://pastebin.com/6CWBAyys(尽管仍然会崩溃)但有时字符串甚至不会进入logcat。

    这里有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我附加参数的jsonParser类。我已经添加了基本网址+参数,因此发送的网址无效。 而不是像https://wimp.supremosolutions.com/api/v1/spot/?format=json&latitude=45.200375&longitude=9.992465000000001

那样发送我的网址

我必须像https://wimp.supremosolutions.com/api/v1/spot/一样发送它,但是然后添加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);

正如Ken Y-N和Alex所说,这个错误是由无效的网址引起的。如果你得到这个DOUBLE,请检查你如何创建你的URL并确切地看到发送的内容