iOS中的json解析過程中,常常遇到了long類型的數據處理問題。在iOS中,long類型通常被視為long long類型,在json解析中,我們需要將它轉化為NSNumber類型,才能正確處理。
long long longValue = 1234567890123; NSNumber *longNumber = [NSNumber numberWithLongLong:longValue]; NSDictionary *dict = @{@"longValue": longNumber}; NSString *jsonStr = @"{\"longValue\" : 1234567890123}"; NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; NSError *error; NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; NSNumber *longNumberFromJson = [jsonDict objectForKey:@"longValue"]; if ([longNumberFromJson isEqual:longNumber]) { NSLog(@"longNumber and longNumberFromJson are equal"); } else { NSLog(@"longNumber and longNumberFromJson are not equal"); }
在上面的代碼中,我們首先創建了一個long long類型的數據longValue,然后使用NSNumber類將它轉為NSNumber類型的數據longNumber。接下來創建一個NSDictionary類型的數據dict,用來存儲longNumber數據。
我們也創建了一個json格式字符串jsonStr,其中包含了longValue數據的鍵值對,使用NSJSONSerialization類將json字符串轉成NSData類型的jsonData數據,然后使用JSONObjectWithData方法將jsonData數據轉為NSDictionary類型的jsonDict數據。最后,我們從jsonDict中取出longValue的value值,也就是longNumberFromJson數據。
使用isEqual方法比較longNumber和longNumberFromJson是否相等,若是相等,則打印“longNumber and longNumberFromJson are equal”,否則打印“longNumber and longNumberFromJson are not equal”。