JSON:NSString stringWithContentsOfURL ...流中有null,崩溃

Posted

技术标签:

【中文标题】JSON:NSString stringWithContentsOfURL ...流中有null,崩溃【英文标题】:JSON: NSString stringWithContentsOfURL... with null in stream, crashes 【发布时间】:2012-01-11 18:48:42 【问题描述】:

环境:ios 4.3+ 使用 Xcode 4.3+

当我实现以下返回带有空值的数据的字符串时,我总是遇到 iOS/Xcode 崩溃:

[NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:&error]; 
NSDictionary *myResult =  (NSDictionary *)[myString JSONValue];

结果:

-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x17315e8

当数据流不包含空值(大部分)时,它可以正常工作。 这是一个已知问题吗?

有什么补救措施吗?

【问题讨论】:

你可以先检查一下: NSDictionary *myResult = (NSDictionary *)[myString JSONValue];例如NSDictionary *myResult =nil; if([myString 长度]>0)myResult = (NSDictionary *)[myString JSONValue]; 您发布的代码没有意义。而且您似乎在使用图书馆时没有告诉我们是哪一个。 【参考方案1】:

您还可以修复来自源的数据。在我几乎所有的 Web 服务交互中,我在查询和 SP 上使用 COALESCE 以确保输出的数据始终保持一致。

【讨论】:

这是一个有趣的想法......对于服务器(Oracle 或其他)。最好提供 CLEAN 数据。

以上是关于JSON:NSString stringWithContentsOfURL ...流中有null,崩溃的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 数据的 NSString 转换为 NSArray [关闭]

如何将 JSON 输出作为 NSString

如何解析比 NSString 更长的 JSON 文件?

如何检索 NSString 中的 JSON 对象

JSON 匹配 NSString 和 NSDictionary

来自 webview 的 NSString 和 JSON 字符串