【问题标题】:Populating an NSString with a null value使用空值填充 NSString
【发布时间】:2013-02-26 16:49:29
【问题描述】:

简而言之,我需要一个包含 null 的字符串,而不是 (null)。

例如:

NSString *jsonRequest = [NSString stringWithFormat:@"{\"ename\":%@}", nil];

形成如下所示的请求:

{ "ename" : (null) }

但我需要它看起来像

{ "ename" : null }

将 nil 替换为 Nil、NULL、[NSNull null] 都等同于相同的输出字符串。

有没有办法做到这一点?当我将请求发送到服务器并尝试解析它,但不喜欢 null 周围的括号时,问题就出现了。

【问题讨论】:

  • 您最好使用真正的 JSON 编码器,而不是自己构建它。 iOS 5 及更高版本附带一个:NSJSONSerialization
  • 你考虑过stringWithFormat:@"\"ename\":null}"吗?

标签: ios objective-c json nsstring


【解决方案1】:

您需要对stringWithFormat 的参数进行特殊处理:

NSString *ename = nil;
NSString *jsonRequest = [NSString stringWithFormat:@"{\"ename\":%@}",
                        ename != nil ? ename : @"null"];

或者创建一个宏:

#define STR_OR_NULL(x) (x) != nil ? (x) : @"null"

NSString *jsonRequest = [NSString stringWithFormat:@"{\"ename\":%@}", STR_OR_NULL(ename)];

【讨论】: