Php 响应字典中键序列号的对象类型错误。应为NSArray,但找到了u NSCFString

Php 响应字典中键序列号的对象类型错误。应为NSArray,但找到了u NSCFString,php,json,passbook,Php,Json,Passbook,我已为passbook设置了web服务错误日志正在记录此错误: 获取设备88a9cbef8e318f61的串行s任务,pass类型pass.com.passbook,上次更新为null;使用web服务url https://时遇到错误:服务器响应的格式不正确,响应字典中的键序列号的类型对象错误。应为NSArray,但找到了NSCFString 找不到PHP中的代码时: $updatable_passes_payload['lastUpdated'] = ''; $upd

我已为passbook设置了web服务错误日志正在记录此错误:

获取设备88a9cbef8e318f61的串行s任务,pass类型pass.com.passbook,上次更新为null;使用web服务url https://时遇到错误:服务器响应的格式不正确,响应字典中的键序列号的类型对象错误。应为NSArray,但找到了NSCFString

找不到PHP中的代码时:

 $updatable_passes_payload['lastUpdated'] = '';
            $updatable_passes_payload['serialNumbers'] = '';
            sendResponse(204, json_encode($updatable_passes_payload), 'text/json');
找到时:

 $update_time = date('Y-m-d H:i:s');
            $updatable_passes_payload['lastUpdated'] = $update_time;
            $updatable_passes_payload['serialNumbers'] = json_encode($types);
            sendResponse(200, json_encode($updatable_passes_payload), 'text/json');
web服务json:

HTTP/1.1 200 OK
Connection: close
Transfer-Encoding: Identity
Content-Type: text/json
X-Powered-By: PHP/5.4.22
Server: Apache mod_fcgid/2.3.10-dev
Date: Sun, 01 Dec 2013 23:25:08 GMT

{"lastUpdated":"2013-12-01 23:25:09","serialNumbers":"[\"102058742\"]"}


i checked this json in a json validator online it returns OK
如果找不到,则返回

HTTP/1.1 204 No Content
Connection: close
Content-Type: text/json
X-Powered-By: PHP/5.4.22
Server: Apache mod_fcgid/2.3.10-dev
Date: Sun, 01 Dec 2013 23:35:17 GMT
由于某些原因,未找到时不返回任何json


任何帮助都将不胜感激

您的问题在于JSON数组。您已将数组封装在引号中,因此它将被解释为字符串

以下方面应起作用:

{"lastUpdated":"2013-12-01 23:25:09","serialNumbers":["102058742"]}
根据规范,serialNumbers应该是字符串数组,因此在您的示例中,它应该是{…,serialNumbers:[102058742]}。当没有匹配的传递时,返回没有内容的HTTP 204是正确的行为。