在 iOS、PHP 和 JSON 中使用来自 SQL Server 的空值
Posted
技术标签:
【中文标题】在 iOS、PHP 和 JSON 中使用来自 SQL Server 的空值【英文标题】:Using null value from SQL Server in iOS, PHP and JSON 【发布时间】:2012-08-01 20:23:43 【问题描述】:我正在设计的应用程序使用从 SQL Server 2008 数据库中选择的 php 脚本返回的 JSON 对象。我遇到的问题是,当数据库缺少某个字段的值时,它在 JSON 中返回为 null。然后当应用程序解析 JSON(我正在使用 NSJSONSerialization)时,字典包含一个值。使用此字典填充我的视图时,应用程序在遇到空值时崩溃。
绕过这个问题的最简单方法是什么?我想我可以在 PHP 将数据返回为 JSON 之前用空字符串替换所有空值;但是,这可能不是最好的解决方案。有没有简单的方法来检查 ios?
感谢您的帮助。
【问题讨论】:
【参考方案1】:要检查空值,您需要查看对象是否为[NSNull null]
。
id object = [dict objectForKey:@"key"];
if(object == [NSNull null])
//Handle null value
【讨论】:
有没有办法检查整个字典?还是我必须用钥匙拉出一个物体然后检查? 您必须检查每个对象,您可以在解析 json 后立即检查每个对象并删除/替换为默认值,或者将NSNull
处理添加到使用并显示值的任何类。
这很糟糕!我知道没有其他方法,但认为您必须明确检查空值。只是想知道为什么 iOS 不像 android 那样将 null 视为 nil !问题是如果我们执行 NSArray *array = [dict objectForKey:@"key"];并且值为null,它将NSNull对象分配给数组,我们不能使用条件if(array && [array count] > 0),因为NSNull不是nil,并且NSNull不响应count,App会崩溃!我最终在我的代码中为每一个都编写了宏。以上是关于在 iOS、PHP 和 JSON 中使用来自 SQL Server 的空值的主要内容,如果未能解决你的问题,请参考以下文章
JSON解析:来自PHP5(攻击数据库:mySQL)ios5 iphone
json swift ios - 将参数发送到 php-sql