0

如果我有如下 JSON 响应:

 "is_following": false, 

如何将其转换为 Objective-C 中的 BOOL?

这似乎不对:

 [[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
4

3 回答 3

1

这取决于您使用的 JSON 解析器。例如,在使用 TouchJSON 的情况下,您只需调用boolValue已解析的对象:[[profileData objectForKey:@"is_following"] boolValue]

于 2012-06-26T22:36:38.803 回答
0

因为-valueForKey返回一个对象 ( id),并且BOOL是 的别名signed char,所以您可以简单地调用-intValue结果:

BOOL asBool = [[profileData valueForKey:@"is_following"] intValue];
于 2012-06-26T22:27:07.440 回答
0

为什么不直接打电话-boolValue呢?

[profileData objectForKey:@"is_following"] boolValue]

任何 JSON 框架都会将该 JSONfalse值转换为NSNumber*. 事实上,它NSString*也会响应-boolValue,因此在发出脑死亡 JSON 源的情况下,"false"您仍然可以得到保障。但是,如果 JSON 包含null或任何容器类型,那么您就会遇到问题,因此您可能需要仔细检查该值实际上是什么类。

*注意,我用的是-objectForKey:代替-valueForKey:,因为如果这是 JSON 则profileData必须是NSDictionary*. -objectForKey:是用于从中提取数据的正确方法NSDictionaries

于 2012-06-26T22:28:58.523 回答