【发布时间】:2016-04-23 16:48:59
【问题描述】:
我正在从我的 android 应用程序中发送一个 JsonArray,如下所示:
final JSONArray data = new JSONArray();
try{
for(int i = 0; i<contactsList.size(); i++){
JSONObject jobj = new JSONObject();
ObjectContacts ob = contactsList.get(i);
jobj.put("contactid", ob.getContact_id());
jobj.put("mobile", ob.getNumber());
data.put(jobj);
}
}
以及我的服务器收到的结果数组。
[
{"contactid":"3","mobile":"(545) 454-5445"},
{"contactid":"1","mobile":"(880) 939-5212"},
{"contactid":"2","mobile":"822895456165"}
]
我需要从这个数组中获取手机号码并执行 Db 操作来查看这个手机号码是否存在。如何访问每个手机并执行查询?查询将包括查找手机号码是否存在,如果为真,它将获取属于手机号码的姓名,最后以 JSONArray 格式将数组返回给移动应用程序,其中包括联系人 ID、手机、状态(是或否),姓名。
时间不是问题,但有时数组可能包含 300-400 个手机号码,具体取决于用户的联系方式。
更新
这是我实现的新 PHP 代码:
$app->post('/getcontacts', function () use ($app) {
//Verifying the required parameters
verifyRequiredParams(array('data'));
//Creating a response array
$response = array();
//reading post parameters
$data = $app->request->post('data');
$data_array = json_decode($data);
foreach ( $data_array as $obj ) {
$res = array();
$db = new DbOperation();
$r = $db->checkContactExist($obj->mobile);
if($r){
$res["contactid"] = $obj->contactid;
$res["mobile"] = $obj->mobile;
$res["name"] = $obj->name;
$res["status"] = 'yes';
$res["image_small"] = $db->getImageSmall($obj->mobile);
} else {
$res["contactid"] = $obj->contactid;
$res["mobile"] = $obj->mobile;
$res["name"] = $obj->name;
$res["status"] = 'no';
$res["image_small"] = '';
}
}
$response["error"] = false;
$response["message"] = json_encode($res);
echoResponse(201, $response);
});
我从服务器得到的响应:
{"contactid":"3","mobile":"(943) 101-9713","status":"no","image_small":""}
虽然应该有三个联系人,但它只能读取一个。
如果我只是通过 echo 将传入数据发送回应用程序以检查是否所有联系人都来了,那么它工作正常。也许在循环中我只添加了一个联系人的详细信息。
第二次更新
已经解决了这个问题:
$final_res = array();
在foreach循环中
$final_res[] = $res;
因此发回:
json_encode($final_res);
【问题讨论】:
-
我尝试循环,然后获取手机号码并执行数据库查询。但循环只运行一次,因为 count(JSONArray) 只显示 1