JSON error “Value at result of type java.lang.String cannot be converted to JSONArray” in android

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

I used the link for JSON RPC. I am getting a response as expected. But when i try to parse the response, it's giving me json error.

My code:

JSONEntity entity = new JSONEntity(jsonRequest);     HttpPost request = new HttpPost("http://192.168.1.150/jsondemo12/service.asmx");     request.setEntity(entity);     HttpResponse response = httpClient.execute(request);     StatusLine statusLine = response.getStatusLine();     int statusCode = statusLine.getStatusCode();     if (statusCode == 200) {         HttpEntity httpEntity = response.getEntity();         InputStream content = httpEntity.getContent();          BufferedReader reader = new BufferedReader(                 new InputStreamReader(content,"iso-8859-1"),8);         String line;         while ((line = reader.readLine()) != null) {             builder.append(line);         }         content.close();     } else {         Log.e(AndroidJSONActivity.class.toString(), "Failed to download file");     }       strJSONValue=builder.toString();      txtViewParsedValue.append("\n+++++++++++++\n"+strJSONValue+"\n");     try {         parseJSON();     } catch (JSONException e) {         Log.e("error","Error while parsing!!!");         e.printStackTrace();     }     Log.e("response", strJSONValue); public void parseJSON() throws JSONException     {         String attr1="",attr2="";         jsonObject = new JSONObject(strJSONValue);         JSONArray  result = jsonObject.getJSONArray("result");    <- Error in this line!!!         for(int i=0;i < result.length();i++){             JSONObject e = result.getJSONObject(i);             attr1 = "ExhibitorID: "+ e.getString("ExhibitorID");             attr2 = "ExhibitorName: "+e.getString("ExhibitorName");         }         strParsedValue=attr1+"\n"+attr2;         Log.d("Parse", attr1);         Log.d("Parse", attr2);          txtViewParsedValue.append("\n**********\nParsed Value: \n");         txtViewParsedValue.append(strParsedValue);     } 

The result i get in "strJSONValue" is string format, without the starting and ending double quotes. Like:

{"id":2,"result":"[ {\"ExhibitorID\":42, etc....} ]"} 

The result string is as per requirement,but i am not able to parse the string into the JSON Object as per requirement. It gives error in Logcat: org.json.JSONException: Value <content of the string> at result of type java.lang.String cannot be converted to JSONArray

Please help me. Thanks

回答1:

your result is actually returning a string not a json array. it will return json array if your json format would be like this

{   "id": 2,   "result": [     {       "ExhibitorID": 42     }   ] } 

currently it is in this form:

{   "id": 2,   "result": "[ {\"ExhibitorID\":42, etc....} ]" } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!