有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类型为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);

共 (5) 个答案

  1. # 1 楼答案

    这是因为“数据”是json数组类型。“数据”中的内容不是jsonarray,它们只是JSONString

    更改以下行

    jsonarray = jArray.getJSONArray(i);
    Stopnames = jsonarray.getString(0);
    

    stopnames += jArray.getString(i);
    
  2. # 2 楼答案

    在JSON中,jArray是字符串数组,而不是JSONArray数组。
    替换:

    jsonarray = jArray.getJSONArray(i);
    Stopnames = jsonarray.getString(0);
    

    与:

    Stopnames = jArray.getString(i);
    
  3. # 3 楼答案

    for循环应该是

    for (int i = 0; i < jArray.length(); i++) {
    
  4. # 4 楼答案

    您试图从jsonarray获取jsonarray,而json数组包含json对象。试试这个

    JSONObject jsonObject = jsonArray.getJSONObject(i)
    Stopnames = jsonObject.getString(Integer.toString(i))
    
  5. # 5 楼答案

    您正在尝试将字符串值解析为JSONArray。jArray是一个字符串数组,而不是JSONArray,所以只需从中提取字符串值即可

    JSONArray jArray = json.getJSONArray("data");
    // You already have a JSONArray, now all you need to do is extract String values from it
    for (int i = 0; i <= jArray.length(); i++) {
        Log.d("Stopnames: " , jArray.getString(i));
        ....
    }