iOS JSON 错误:NSDebugDescription=Garbage at end

Posted

技术标签:

【中文标题】iOS JSON 错误:NSDebugDescription=Garbage at end【英文标题】:iOS JSON Error: NSDebugDescription=Garbage at end 【发布时间】:2014-08-14 20:31:54 【问题描述】:

这是一个非常奇怪的错误,当从我的服务器(通过 php 生成)获取 JSON 时,调用时出现此错误:

json = [NSJSONSerialization JSONObjectWithData:kivaData
                                       options:kNilOptions
                                         error:&jsonError];

JSON 错误:Error Domain=NSCocoaErrorDomain Code=3840“无法完成操作。(Cocoa 错误 3840。)”(垃圾结束。) UserInfo=0x178467d00 NSDebugDescription=结束垃圾。

My (NSData* kivaData) 完美抓取所有内容,但无法解析 JSON。

我在 http://jsonlint.com/ 中运行了我的 JSON 代码,结果每次都有效。

这真的很奇怪,因为它可以在我连接到 Wifi 时解析 JSON,但是当我尝试通过蜂窝网络进行解析时,它就不起作用了。它确实可以在某些人的手机上通过蜂窝网络工作,但每次都可以。

【问题讨论】:

您找到解决方案了吗?我看到同样的事情。我的 JSON 响应是 110k 左右,如果有帮助的话。 【参考方案1】:

编码非常重要。如果您的 json 有效,则问题可能是您的 json 数据中有特殊字符,而 json 序列化程序未正确解析这些字符。当您发送数据时,请确保您在发送内容时具有正确的 url 编码,以便客户端正确解析它。始终使用 utf-8 或 base64。

【讨论】:

【参考方案2】:

我能够通过在响应之前发送一个内容长度标头来解决相同的问题(适用于 wifi,但不适用于运营商网络):

header("Content-length: ".strlen($response));
echo $response;
exit;

【讨论】:

【参考方案3】:

我最终不得不将我的 php 文件从回显 json 语法更改为简单地使用 json_encode 输出。

【讨论】:

【参考方案4】:

JsonData 通常以字典格式存储。由于 json 无法解析连续数据[它无法分离响应],因此会抛出此错误。

您可以维护一个字典来存储从服务器获得的响应。 每个任务都会有独特的反应。所以创建一个字典,其中“keys”作为任务的“taskIdentifier”,“values”作为“data”。

例如: 在 didReceiveData 或任何其他等效方法 [从服务器获得响应的地方] 将响应存储在字典中,其中 taskIdentifier 作为键。

 NSString *taskID = [@(dataTask.taskIdentifier) stringValue];
[_task_data_dictionary setObject:data forKey:taskID];

这里的_task_data_dictionary是字典。这样就可以摆脱上面的错误了。

在此之后,您可以使用此代码使用相同的字典获取数据

 NSData *data = [_task_data_dictionary objectForKey:taskNumber];

再次使用 taskIdentifier 。

希望这会有所帮助。

【讨论】:

【参考方案5】:

使用 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)

【讨论】:

以上是关于iOS JSON 错误:NSDebugDescription=Garbage at end的主要内容,如果未能解决你的问题,请参考以下文章

Json 到 iOS 编码错误

ios JSON解析常见错误

JSON iOS 失败错误

JSON 和 iOS 7 错误

使用 JSON 和 php 的 iOS 错误

JSON解析在IOS中得到错误NSErrorFailingURLKey