The link is http://iipacademy.in/askpoll/ten_feed.php
exception is in onPostExecute() method (4th line) :
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();
}
LOGCAT:
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
Message is an array so what should be its code or how to can it be solved ?
Thanks in advance . . .
org.json.JSONException: Value response of type java.lang.String cannot be converted to JSONArray
Looks like response is a string not a json array
{ // json object node
"response": { // json object response
"result": 1,
"Message": [ // json array Message
{ // json object node
"pollid": "98",
"category": "Entertainment",
"question": "what", // string
"option1": "981.mov",
The result is a json object not json array
JSONArray jsonArray = new JSONArray(result);
Should be
JSONObject jObj = new JSONObject(result);
JSONObject response = jObj.getJSONObject("response");
//JSONObject jb = new JSONObject(response);
JSONArray jr = response.getJSONArray("Message");
for(int i=0;i<jr.length();i++)
{
JSONObject jb1 = jr.getJSONObject(i);
String question = jb1.getString("question");
Log.i(".......",question);
}
Result is not an array, Message is.
Try this:
Log.i("result", result);
try {
if (result != null) {
JSONObject jObject = new JSONObject(result);
JSONArray jsonArray = jObject.getJSONObject("response").getJSONArray("Message");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject objJson = jsonArray.getJSONObject(i);
TopTenGetterSetter obj = new TopTenGetterSetter();
/*
* [{"job_id":"1","job_staff_id":"","job_name":"Account",
* "job_detail":"test\r\ntesds","job_start_date":
* "2013-11-08"
* ,"job_end_date":"2013-11-10","job_amount":"500"
* ,"job_progress":"","job_complete_status":"0"}]
*/
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);
// am = Customer.info.get(pos).getJamount();
// Toast.makeText(getApplicationContext(), am + result,
// Toast.LENGTH_LONG).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "error",
Toast.LENGTH_SHORT).show();
}
As mario and nfear said, you are trying to cast a JSONObject into a JSONArray.
String content JSONObject as root element instead of JSONArray.to get Message
JSONArray from String you should first get response
JSONObject then get Message
JSONArray as:
JSONObject jsonobj = new JSONObject(result);
// get response JSONObject
JSONObject jsonobj_response = jsonobj.getJSONObject("response");
// get Message JSONArray from jsonobj_response
JSONArray jsonArray = jsonobj_response.getJSONArray("Message");
// your code here.....
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With