将JSON属性响应转换为BOOL

时间:2012-06-26 22:21:09

标签: iphone objective-c ios ipad

如果我有如下的JSON响应:

 "is_following": false, 

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

这似乎不对:

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

由于-valueForKey会返回一个对象(id),而BOOLsigned char的别名,因此您只需在结果上调用-intValue:< / p>

BOOL asBool = [[profileData valueForKey:@"is_following"] intValue];

答案 2 :(得分:0)

为什么不直接拨打-boolValue

[profileData objectForKey:@"is_following"] boolValue]

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

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