Php iOS JSON错误:NSDebugDescription=末尾的垃圾
这是一个非常奇怪的错误,当从我的服务器(通过PHP生成)获取JSON时,调用时会出现以下错误:Php iOS JSON错误:NSDebugDescription=末尾的垃圾,php,ios,json,garbage,Php,Ios,Json,Garbage,这是一个非常奇怪的错误,当从我的服务器(通过PHP生成)获取JSON时,调用时会出现以下错误: json = [NSJSONSerialization JSONObjectWithData:kivaData options:kNilOptions error:&jsonError]; JSON错误:Error Domain=NS
json = [NSJSONSerialization JSONObjectWithData:kivaData
options:kNilOptions
error:&jsonError];
JSON错误:Error Domain=NSCOCAERRORDOMAIN Code=3840“操作无法完成。(Cocoa错误3840.)(结尾处为垃圾。)UserInfo=0x178467d00{NSDebugDescription=结尾处为垃圾。}
My(NSData*kivaData)完美地抓住了一切,但它无法解析JSON
我已经运行了我的JSON代码,每次都有效
这真的很奇怪,因为当我连接到Wifi时,它可以解析JSON,但当我尝试通过手机进行解析时,它就不起作用了。在某些人的手机上,它确实可以在手机上工作,但每次都是这样。编码非常重要。如果json有效,问题可能是json数据中有特殊字符,json序列化程序无法正确解析这些字符。当您发送数据时,请确保在发送内容时使用了正确的url编码,以便客户端能够正确解析数据。使用utf-8 always或base64。我能够通过在响应之前发送内容长度头来解决相同的问题(在wifi上工作,但在运营商网络上不工作):
header("Content-length: ".strlen($response));
echo $response;
exit;
最后,我不得不将我的php文件从回显json语法改为简单地用json_encode输出。JsonData通常以字典格式存储。由于json无法解析连续数据[无法分离响应],因此抛出此错误 您可以维护一个字典来存储从服务器获得的响应。 每个任务都有一个唯一的响应。因此,创建一个字典,用“键”作为任务的“任务标识符”,用“值”作为“数据” 例如: 在didReceiveData或任何其他等效方法中[从服务器获取响应的地方]使用taskIdentifier作为键将响应存储在字典中
NSString *taskID = [@(dataTask.taskIdentifier) stringValue];
[_task_data_dictionary setObject:data forKey:taskID];
这里的任务数据字典就是字典。这样你就可以摆脱上面的错误
在此之后,您可以使用此代码使用相同的字典获取数据
NSData *data = [_task_data_dictionary objectForKey:taskNumber];
再次使用taskIdentifier
希望这有帮助。使用swift 4,首先使用print检查JSON数据:
print (String(data:data!, encoding: .utf8)!)
检查空格或不需要的字符,然后删除它们:
var string = String(data: data!, encoding: .utf8)
string = string?.replacingOccurrences(of: "/r/n", with: "")
之后,将字符串重新分配给数据变量:
let data1 = string!.data(using: .utf8)
你有没有找到解决办法?我也看到了同样的事情。如果有帮助的话,我的JSON响应是110k左右。