如果我有如下 JSON 响应:
"is_following": false,
如何将其转换为 Objective-C 中的 BOOL?
这似乎不对:
[[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
如果我有如下 JSON 响应:
"is_following": false,
如何将其转换为 Objective-C 中的 BOOL?
这似乎不对:
[[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
这取决于您使用的 JSON 解析器。例如,在使用 TouchJSON 的情况下,您只需调用boolValue
已解析的对象:[[profileData objectForKey:@"is_following"] boolValue]
因为-valueForKey
返回一个对象 ( id
),并且BOOL
是 的别名signed char
,所以您可以简单地调用-intValue
结果:
BOOL asBool = [[profileData valueForKey:@"is_following"] intValue];
为什么不直接打电话-boolValue
呢?
[profileData objectForKey:@"is_following"] boolValue]
任何 JSON 框架都会将该 JSONfalse
值转换为NSNumber*
. 事实上,它NSString*
也会响应-boolValue
,因此在发出脑死亡 JSON 源的情况下,"false"
您仍然可以得到保障。但是,如果 JSON 包含null
或任何容器类型,那么您就会遇到问题,因此您可能需要仔细检查该值实际上是什么类。
*注意,我用的是-objectForKey:
代替-valueForKey:
,因为如果这是 JSON 则profileData
必须是NSDictionary*
. -objectForKey:
是用于从中提取数据的正确方法NSDictionaries
。