如果我有一個JSON迴應如下:轉換JSON屬性響應BOOL
"is_following": false,
我如何轉換這在Objective-C布爾?
這似乎並沒有是正確的:
[[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
如果我有一個JSON迴應如下:轉換JSON屬性響應BOOL
"is_following": false,
我如何轉換這在Objective-C布爾?
這似乎並沒有是正確的:
[[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框架將是JSON false
值轉換爲NSNumber*
。實際上NSString*
也會對-boolValue
做出響應,所以如果發生腦死的JSON源發出"false"
,您仍然會被覆蓋。但是,如果JSON包含null
或任何容器類型,那麼您將遇到問題,因此您可能需要仔細檢查該值的實際類別。 *請注意,我使用-objectForKey:
而不是-valueForKey:
,因爲如果這是JSON,那麼profileData
必須是NSDictionary*
。 -objectForKey:
是用於從NSDictionaries
提取數據的正確方法。
從現在開始使用JSONKit – xonegirlz
從JSONKit文檔:'true'和'false'基本類型映射到NSNumber。所以這個解決方案應該可行 – onegray
看來JSONKit不會將@ 1或@ 0視爲與[NSNumber numberWithBool:YES | NO]相同,當它是後者時,JSONKit將正確轉換。 – Vamos