[英]Get correct type value from json dictionary
在Objectivec中有沒有辦法從json字典中獲取確切的值類型 ?
例如,考慮以下json:
{
"ret": 0,
"state": "Italy",
"lat": 45.46347,
"lon": 9.19404
}
我想獲取“ ret ”的INT
值,“ state ”的NSString
值,“ lat ”和“ lon ”的FLOAT
值。
我正在使用以下代碼段:
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"sampleJson.json"]];
NSDictionary *dict = [ NSJSONSerialization JSONObjectWithData:data options:0 error:nil ];
id val = [ dict valueForKeyPath:@"lat" ][0];
NSLog(@"%@", [val class] );
但顯然,輸出是通用NSNumber
。
2014-01-31 11:13:51.903 Test0002 [2044:70b] __NSCFNumber
有可能會自動獲得float
而不是NSNumber
嗎?
要檢查NSNumber是float還是int,可以使用以下方法:
if ([val isMemberOfClass:[NSNumber class]])
{
switch(CFNumberGetType((CFNumberRef((NSNumber)val))
{
/* List of results:
kCFNumberSInt8Type
kCFNumberSInt16Type
kCFNumberSInt32Type
kCFNumberSInt64Type
kCFNumberFloat32Type
kCFNumberFloat64Type
kCFNumberCharType
etc... */
}
}
找到類型后,只需使用:
float f = [((NSNumber)val) floatValue];
要么
int i =[((NSNumber)val) intValue];
在此處找到整個列表:
要檢查它是否為NSString,只需執行以下操作:
if([val isMemberOfClass:[NSString class]])
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.