类型为java的0上的安卓。无法将lang.String转换为JSONArray
我在java类型的0处遇到此异常。字符串无法转换为JSONArray不知道为什么?我以前在不同的工作中使用过这个,但没有得到这个例外
List<NameValuePair> pair = new ArrayList<>();
pair.add(new BasicNameValuePair("id", String.valueOf(getitemno)));
json = JSONParser.makeHttpRequest("http://192.168.1.51:80/StopViewApi/index.php","POST",pair);
Log.d("Route Response", json.toString());
int success = 0;
try {
success = json.getInt(TAG_SUCCESS);
Routearrray = new ArrayList<String>();
} catch (JSONException e) {
e.printStackTrace();
}
try {
if (success == 1) {
JSONArray jsonarray;
json = new JSONObject(JSONParser.Result);
JSONArray jArray = json.getJSONArray("data");
for (int i = 0; i <= jArray.length(); i++) {
jsonarray = jArray.getJSONArray(i);
Stopnames = jsonarray.getString(0);
Counter++;
if (Counter <=jArray.length()) {
//Routearrray.add(Stopnames);
Log.d("Stop name:", Stopnames);
//Log.d("Route name:", Routearrray.toString());
} else {
break;
}
}
JSON URL
{
"data":[
"Rawat","Islamabad Mor","Kaak Pull","Lohi Bher","Koral Chowk","Gangal",
"Khana Bridge","Zia Masjid","Kuri Road","Dhok Kala Khan","Faizabad",
"Pirwadhai Mor","Tanki Stop I-8\/4","I-8\/3 Stop","Al Shifa Hospital","AIOU",
"Zero Point","Children Hospital","F-8\/4","Ali Hospital"
],
"success":1,
"status":200,
"status_message":"Login Successfull"
}
错误:在第行
jsonarray = jArray.getJSONArray(i);
# 1 楼答案
这是因为“数据”是json数组类型。“数据”中的内容不是jsonarray,它们只是JSONString
更改以下行
到
# 2 楼答案
在JSON中,
jArray
是字符串数组,而不是JSONArray数组。替换:
与:
# 3 楼答案
for循环应该是
# 4 楼答案
您试图从jsonarray获取jsonarray,而json数组包含json对象。试试这个
# 5 楼答案
您正在尝试将字符串值解析为JSONArray。jArray是一个字符串数组,而不是JSONArray,所以只需从中提取字符串值即可