为什么在Android 2.3上JSONObject无法工作,但在Android 4.2上却可以正常工作?

6
我正在请求服务器返回一个JSONObject,其中包含一些ID的列表。这在Android 4.2中可以正常工作,但在Android 2.3上无法工作(已在设备和模拟器上进行了测试)。
下面是该JSONObject的内容:
{"IdList":[{"id":"004502"},{"id":"S007901"},{"id":"041501"},{"id":"S139001"}]}

这在4.2版本中运行良好,但在2.3版本中显示NullPointerException

我的LogCat如下:

org.json.JSONException: Value Nullpointer of type java.lang.String cannot be converted to JSONObject
06-06 11:23:46.881: W/System.err(1820):     at org.json.JSON.typeMismatch(JSON.java:107)
06-06 11:23:46.893: W/System.err(1820):     at org.json.JSONObject.<init>(JSONObject.java:158)
06-06 11:23:46.893: W/System.err(1820):     at org.json.JSONObject.<init>(JSONObject.java:171)
06-06 11:23:46.893: W/System.err(1820):     at my.Site.serverInterface.executeHttpRequest(serverInterface.java:128)
06-06 11:23:46.893: W/System.err(1820):     at my.Site.serverInterface.getAtmId(serverInterface.java:54)
06-06 11:23:46.901: W/System.err(1820):     at my.Site.TrackLocation$AtmGetter.doInBackground(TrackLocation.java:379)
06-06 11:23:46.901: W/System.err(1820):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-06 11:23:46.901: W/System.err(1820):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
06-06 11:23:46.901: W/System.err(1820):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
06-06 11:23:46.901: W/System.err(1820):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
06-06 11:23:46.901: W/System.err(1820):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
06-06 11:23:46.901: W/System.err(1820):     at java.lang.Thread.run(Thread.java:1019)
06-06 11:23:46.901: I/System.out(1820): null
06-06 11:23:46.912: I/System.out(1820)://e
06-06 11:23:46.912: W/System.err(1820): java.lang.NullPointerException
06-06 11:23:46.912: W/System.err(1820):     at my.Site.TrackLocation$AtmGetter.doInBackground(TrackLocation.java:384)
06-06 11:23:46.912: W/System.err(1820):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-06 11:23:46.912: W/System.err(1820):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
06-06 11:23:46.912: W/System.err(1820):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
06-06 11:23:46.912: W/System.err(1820):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
06-06 11:23:46.912: W/System.err(1820):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
06-06 11:23:46.912: W/System.err(1820):     at java.lang.Thread.run(Thread.java:1019)
06-06 11:23:46.921: W/dalvikvm(1820): threadid=10: thread exiting with uncaught exception (group=0xb60c84f0)
06-06 11:23:46.931: E/AndroidRuntime(1820): FATAL EXCEPTION: AsyncTask #3
06-06 11:23:46.931: E/AndroidRuntime(1820): java.lang.RuntimeException: An error occured while executing doInBackground()
06-06 11:23:46.931: E/AndroidRuntime(1820):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.lang.Thread.run(Thread.java:1019)
06-06 11:23:46.931: E/AndroidRuntime(1820): Caused by: java.lang.NullPointerException
06-06 11:23:46.931: E/AndroidRuntime(1820):     at my.Site.TrackLocation$AtmGetter.doInBackground(TrackLocation.java:427)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-06 11:23:46.931: E/AndroidRuntime(1820):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
06-06 11:23:46.931: E/AndroidRuntime(1820):     ... 4 more

在初始化 JSONObject 时将其保持为 null。 - Varun Vishnoi
1
你在doinBackground方法中遇到了NullPointerException。最好在onPost方法中打印JSON响应并开始解析。 - Sunil Kumar
@VarunVishnoi和sunil...都没工作。 - Mr.India
如果您发布代码,我们可以提供进一步的帮助。 - NaserShaikh
2
提供一些代码。只有这样我们才能了解它。 - Nizam
显示剩余9条评论
3个回答

0

0

0

无法工作。为什么在2.3中无法工作?在4.2中可以正常工作。 - Mr.India

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接