无法访问 JSON 数组 Android 的某些成员

Can't access some member of JSON array Android

我有JSON array这样的

[
  {
    "ride_id": "48",
    "user_id": "22",
    "event_id": "42",
    "driver_id": "0",
    "pick_up_location": "11111"
  },
  {
    "ride_id": "48",
    "user_id": "21",
    "event_id": "42",
    "driver_id": "0",
    "pick_up_location": "11111"
  },
  {
    "name": "ofir rosner",
    "image": "",
    "address": "Yokne\'am Illit, Israel"
  },
  {
    "name": "hhhh",
    "image": "profilePictureOfUserId22.JPG",
    "address": "ffffd"
  }
]

我正在使用 OKhttp3 检索我的数据,例如

 Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i=0; i<array.length(); i++){
    JSONObject object = array.getJSONObject(i);
     ...........

但是 JSONObeject 的对象 i 只包含

{"ride_id":"50","user_id":"2","event_id":"44","driver_id":"0","pick_up_location":"11111"}

但我希望能够做这样的事情object.setString("name") 或前往 i 处的 object 获取姓名、图片和地址

您的所有对象都没有 name key-value 对,因此您可以使用 optString , It returns an empty string if there is no such key

JSONArray array = new JSONArray(response.body().string());
for (int i=0; i<array.length(); i++){
    JSONObject object = array.getJSONObject(i);
    String name = object.optString("name");

    // optionally use object.optString("name","No Name Found");
    // To display some default string as name 

    if(!name.isEmpty()){
        // we got the data , use it
        Log.i("name is ",name); // display data in logs
      }
}

或者您可以使用 has 其中 Determine if the JSONObject contains a specific key.

JSONArray array = new JSONArray(response.body().string());
for (int i=0; i<array.length(); i++){
    JSONObject object = array.getJSONObject(i);
    String name;
    if(object.has("name")){
          name = object.optString("name"); // got the data , use it
      }
}

{   // this object has no "name" key-value pair and so does some other object
    "ride_id": "48",
    "user_id": "22",
    "event_id": "42",
    "driver_id": "0",
    "pick_up_location": "11111"
  }