objective C从Json对象获取Decimal

时间:2010-10-20 11:08:10

标签: objective-c json decimal

我试图将json值解析为小数而没有成功。我使用以下框架

http://code.google.com/p/json-framework/

我的代码如下

NSDecimal RRP = [[jProduct objectForKey:@"Price"] decimalValue];
NSLog(@"%@", RRP);

我得到了

收到收到的信号:“EXC_BAD_ACCESS”。

试试我以为我会试试这个:

NSLog(@"%@", [jProduct objectForKey:@"Price"]);

42.545

我得到了值,但显然我没有设置NSDecimal。

其他人有过类似的经历,或者能看出我做错了什么?

由于

5 个答案:

答案 0 :(得分:2)

我不熟悉您正在使用的框架,但我建议如下:

[jProduct objectForKey:@“price”]返回的类型是什么?

您可能需要解决这个错误类型的事实 - 可能是一个NSString?

尝试:

NSDecimal RRP = [[NSDecimalNumber decimalNumberWithString:[jProduct objectForKey:@“Price”] decimalValue];

编辑:

哦,NSDecimal是一个结构,而不是一个对象所以你不应该使用NSLog(@“%@”);因为%@格式标识符用于对象..而是可以使用基本类型格式标识符,例如%d或%i,并单独访问结构的组件。

但是,由于您可能希望记录小数而不是结构的组件(符号,尾数等),因此您可能希望将其转换回NSDecimalNumber(这是一个对象)。

所以它变成了:

NSLog(@“%@”,[NSDecimalNumber decimalNumberWithDecimal:RRP]);

答案 1 :(得分:0)

[jProduct objectForKey:@"Price"]

可能是NSString。 NSString响应:

 – doubleValue
 – floatValue
 – intValue
 – integerValue
 – longLongValue
 – boolValue

不是decimalValue

验证您的数据类别。

答案 2 :(得分:0)

将值存储在NSNumber

NSNumber * num = [jProduct objectForKey:@“Price”];

答案 3 :(得分:0)

NSDecimal是结构,而不是对象。如果您要打印NSDecimal,请使用NSDecimalString()

NSDecimal rrp = [[jProduct objectForKey:@"Price"] decimalValue];
NSLog(@"%@", NSDecimalString(rrp));

答案 4 :(得分:0)

请参阅Decimal & JSON示例。我认为它会对你有帮助。