链接为http://iipacademy.in/askpoll/ten_feed.php
异常位于onPostExecute()方法中(第4行):
Log.i("result", result);
try {
if (result != null) {
JSONArray jsonArray = new JSONArray(result); // erreor
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject objJson = jsonArray.getJSONObject(i);
TopTenGetterSetter obj = new TopTenGetterSetter();
obj.setQ(objJson.getString("question"));
obj.setA(objJson.getString("option1"));
obj.setB(objJson.getString("option2"));
obj.setC(objJson.getString("option3"));
obj.setD(objJson.getString("option4"));
polls.add(obj);
}
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "error",
Toast.LENGTH_SHORT).show();
}
日志:
12-18 03:20:45.447: W/System.err(2790): org.json.JSONException: Value response of type java.lang.String cannot be converted to JSONArray
12-18 03:20:45.447: W/System.err(2790): at org.json.JSON.typeMismatch(JSON.java:111)
12-18 03:20:45.447: W/System.err(2790): at org.json.JSONArray.<init>(JSONArray.java:91)
12-18 03:20:45.447: W/System.err(2790): at org.json.JSONArray.<init>(JSONArray.java:103)
12-18 03:20:45.447: W/System.err(2790): at com.example.askpollie.LatestPollParticipated$FetchingEventsDetails.onPostExecute(LatestPollParticipated.java:188)
12-18 03:20:45.447: W/System.err(2790): at com.example.askpollie.LatestPollParticipated$FetchingEventsDetails.onPostExecute(LatestPollParticipated.java:1)
12-18 03:20:45.447: W/System.err(2790): at android.os.AsyncTask.finish(AsyncTask.java:631)
12-18 03:20:45.447: W/System.err(2790): at android.os.AsyncTask.access$600(AsyncTask.java:177)
12-18 03:20:45.447: W/System.err(2790): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
12-18 03:20:45.447: W/System.err(2790): at android.os.Handler.dispatchMessage(Handler.java:99)
12-18 03:20:45.447: W/System.err(2790): at android.os.Looper.loop(Looper.java:137)
12-18 03:20:45.447: W/System.err(2790): at android.app.ActivityThread.main(ActivityThread.java:5103)
12-18 03:20:45.447: W/System.err(2790): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 03:20:45.447: W/System.err(2790): at java.lang.reflect.Method.invoke(Method.java:525)
12-18 03:20:45.447: W/System.err(2790): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-18 03:20:45.447: W/System.err(2790): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-18 03:20:45.447: W/System.err(2790): at dalvik.system.NativeStart.main(Native Method)
12-18 03:20:45.447: D/dalvikvm(2790): GC_FOR_ALLOC freed 5131K, 55% free 4437K/9672K, paused 2ms, total 2ms
消息是一个数组,那么它的代码应该是什么,或者如何求解?
提前感谢......
9条答案
按热度按时间zkure5ic1#
响应似乎是字符串而不是json数组
结果是json对象而不是json数组
应该是
uajslkp62#
结果不是数组,消息是。
izkcnapc3#
试试这个:
正如mario和nfear所说,您试图将一个JSONObject转换成一个JSONArray。
gijlo24d4#
字符串内容JSONObject作为根元素,而不是JSONArray.to从String获取
Message
JSONArray,您应该首先获取response
JSONObject,然后获取Message
JSONArray,如下所示:tcomlyy65#
试试这个
lqfhib0f6#
您发布的JSON具有
获取jsonArray后,在循环中使用它,根据Json中的值的类型解析Json。
因此,请检查您是否根据json所持有的值的类型来解析json。
qcuzuvrc7#
您正在尝试将单一对象转换成数组。
lh80um4z8#
最好使用GSON库而不是手动解析它。GSON你可以在goggling上找到它。并给出了示例。
2ledvvac9#
例如,如果您有一个如下所示的json代码,则需要了解JSONArray字符串包含在**[]中,而JSONObject字符串包含在{}**中
在这种情况下,您需要调用JSONArray类并让它获取JSONObject