如果我有如下的JSON响应:
"is_following": false,
如何在Objective-C中将其转换为BOOL?
这似乎不对:
[[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
答案 0 :(得分:1)
这取决于您使用的JSON解析器。例如,如果使用TouchJSON,您只需在解析的对象上调用boolValue
:[[profileData objectForKey:@"is_following"] boolValue]
答案 1 :(得分:0)
由于-valueForKey
会返回一个对象(id
),而BOOL
是signed 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
中提取数据的正确方法。