响应字典中键serialNumbers的类型对象错误.应为NSArray,但找到__NSCFString


Wrong type object for key serialNumbers in response dictionary. Expected NSArray but found __NSCFString

我为存折设置了一个web服务,错误日志记录了这个错误:

获取序列号任务(对于设备88a9cbef8e318f61,传递类型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"]}