我试图将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。
其他人有过类似的经历,或者能看出我做错了什么?
由于
答案 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示例。我认为它会对你有帮助。