簡體   English   中英

從JSON字典中獲取正確的類型值

[英]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];

在此處找到整個列表:

CFNumber參考

要檢查它是否為NSString,只需執行以下操作:

if([val isMemberOfClass:[NSString class]])
{
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM