将JSON ARRAY转换为NSNumber数组

时间:2014-01-13 20:10:06

标签: ios arrays json nsarray nsnumber

我从JSON Web服务检索数据并将其保存到以下数组中 _soldamount = (     0,     0,     0,     0,     “62.69”,     “48.3”,     81,     “59.83”,     “162.57”,     0,     “40.67”, ) 我相信这个数组保存为字符串。如何将此数组转换为NSnumbers数组?谢谢你的帮助!

5 个答案:

答案 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的数组。原始数组可以包含NSNumberNSString个对象。

答案 1 :(得分:0)

您可以使用以下代码执行此操作:

NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *e = nil;
id json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&e];

json变量中存储的内容取决于JSON数据。最常见的是NSDictionaryNSArray,看起来你的版本可能是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]]

相关问题