JSONObject does not work for Android 2.3, but works fine with Android 4.2, why?

I am requesting a server for JSONObject and contains a list of some identifiers. This works fine with Android 4.2, but does not work with Android 2.3 (tested on both the device and the emulator).

JSONObject is as follows.

{"IdList":[{"id":"004502"},{"id":"S007901"},{"id":"041501"},{"id":"S139001"}]} 

This works fine with 4.2, but shows a NullPointerException in 2.3.

My LogCat is as follows:

 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 
+6
source share
3 answers

download the jar org.json and import it. It should work for 2.3.

Refer to this.

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

0
source

You tried to set responseType to json . If the problem still exists, there are several suggestions in these posts.

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

JSONObject initialization problem

JSON parsing issue

0
source

Source: https://habr.com/ru/post/946658/


All Articles