【问题标题】:JSONObject not working for Android 2.3 but works fine with Android 4.2, why?JSONObject 不适用于 Android 2.3,但适用于 Android 4.2,为什么?
【发布时间】:2013-06-06 09:04:07
【问题描述】:

我正在向服务器请求一个 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 时保持为空。
  • 您在 doinBackgroung 方法中得到 NullPointerException。最好在开始解析的 onPost 方法中打印 json 响应。
  • @VarunVishnoi 和 sunil .. 不工作。
  • 如果您发布代码,我们可以提供进一步的帮助。
  • 提供一些代码。那么只有我们可以告诉它。

标签: android json


【解决方案1】:

【讨论】:

  • 不工作.. 为什么这在 2.3 中不起作用?它在 4.2 中运行良好。
【解决方案2】:

下载 org.json jar 并将其导入。它也应该适用于 2.3。

参考这个..

JSON Parsing works on Android 4.0 but not on Android < 4.0

【讨论】:

    【解决方案3】:

    您是否尝试将responseType 设置为json。如果问题仍然存在,这些帖子中有一些建议

    JSON Parsing works on Android 4.0 but not on Android < 4.0

    Issue initializing a JSONObject

    JSON parsing problem

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多