我从JSON Web服务检索数据并将其保存到以下数组中 _soldamount = ( 0, 0, 0, 0, “62.69”, “48.3”, 81, “59.83”, “162.57”, 0, “40.67”, ) 我相信这个数组保存为字符串。如何将此数组转换为NSnumbers数组?谢谢你的帮助!
答案 0 :(得分:1)
NSArray *_soldamount = @[ @0, @0, @0, @0, @"62.69", @"48.3", @81, @"59.83", @"162.57", @0, @"40.67"];
NSArray *numbers = [_soldamount valueForKey:@"doubleValue"];
创建一个NSNumber
的数组。原始数组可以包含NSNumber
或NSString
个对象。
答案 1 :(得分:0)
您可以使用以下代码执行此操作:
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *e = nil;
id json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&e];
json
变量中存储的内容取决于JSON数据。最常见的是NSDictionary
或NSArray
,看起来你的版本可能是NSArray
。
答案 2 :(得分:0)
如果要将这些值存储为数字,则您的Web服务应该返回它们。换句话说,无论字符串是否为数字,带有引号(“)的值都是一个字符串。
如果您无法控制网络服务并仍希望将这些值存储为NSNumbers,则可以使用[NSNumber numberWithFloat:[string floatValue]]
,或者如果字符串可能包含较大的值,您可能希望使用[string doubleValue]
或高精度浮点值。
如果您还没有使用NSJSONSerialization类,请参阅Gavin关于如何使用它的答案。
答案 3 :(得分:0)
NSError *error;
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSArray *soldAmount = [json objectForKey:@"amount"]; // Your array of strings.
// Convert string array to number array
NSMutableArray *numberArray = [NSMutableArray array];
[soldAmount enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[numberArray addObject:[NSNumber numberWithFloat:[(NSString *)obj floatValue]]];
}];
答案 4 :(得分:-2)
使用[NSnumber numberWithInteger:[string integerValue]]