2012-06-26 55 views
0

如果我有一個JSON迴應如下:轉換JSON屬性響應BOOL

"is_following": false, 

我如何轉換這在Objective-C布爾?

這似乎並沒有是正確的:

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

回答

1

它取決於您使用的JSON解析器。例如,在使用TouchJSON的情況下,您可以在解析對象上調用boolValue[[profileData objectForKey:@"is_following"] boolValue]

+0

從現在開始使用JSONKit – xonegirlz

+0

從JSONKit文檔:'true'和'false'基本類型映射到NSNumber。所以這個解決方案應該可行 – onegray

+0

看來JSONKit不會將@ 1或@ 0視爲與[NSNumber numberWithBool:YES | NO]相同,當它是後者時,JSONKit將正確轉換。 – Vamos

0

因爲-valueForKey返回一個對象(id)和BOOLsigned char的別名,你可以簡單地調用-intValue的結果:

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

爲什麼不直接撥打-boolValue

[profileData objectForKey:@"is_following"] boolValue] 

任何JSON框架將是JSON false值轉換爲NSNumber*。實際上NSString*也會對-boolValue做出響應,所以如果發生腦死的JSON源發出"false",您仍然會被覆蓋。但是,如果JSON包含null或任何容器類型,那麼您將遇到問題,因此您可能需要仔細檢查該值的實際類別。 *請注意,我使用-objectForKey:而不是-valueForKey:,因爲如果這是JSON,那麼profileData必須是NSDictionary*-objectForKey:是用於從NSDictionaries提取數據的正確方法。