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