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

Android Can';无法访问JSON数组的某些成员,android,json,okhttp3,Android,Json,Okhttp3,我有这样的JSON数组 [ { "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_locati

我有这样的
JSON数组

[
  {
    "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);
     ...........
但是我希望能够像这样做
object.setString(“name”)

或者要在
i
位置找到
对象,查找名称、图像和地址您的所有对象都没有
名称
键值对,因此您可以使用,
如果没有这样的键值,它将返回一个空字符串

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
      }
}


您所说的“您的所有对象没有名称-键值对”,但数组中有“名称”,我想访问它是什么意思it@styx检查示例,您的所有对象都没有
名称
键值对,因此您可以使用opt string,如果键值不存在,它不会引发异常,而是给你空字符串,或者你可以使用
has
确认key的存在。我知道对象中没有“name”,但我想访问has@styx我也在我的答案中添加了代码,在
if
use
String name
对象中,该对象将显示数据,如果存在,但对象中没有名称,因此
if
语句将始终返回false,并且我检查了
JSONArray
长度为2而不是4
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
      }
}
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"
  }