Java android解析数据org.json.JSONException时出错
我有两个网址 如果我通过我的android活动运行第一个,那么结果将毫无问题地加载到我的列表中。 但是如果我运行第二个URL,那么我就会得到这个错误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:
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末尾额外获得一个“?”。这会破坏应用程序。请在下面填写答案,我会将其标记为答案。