我的json响应的数值类似于" 20.0000"
解析它就像
id jsonObject1 = [NSJSONSerialization JSONObjectWithData:responseData7 options:NSJSONReadingAllowFragments error:nil];
AmountArray = [jsonObject1 valueForKey:@"Amt"];
我的问题是,当我打印(检查)jsonObject1时,金额值只是' 20'而不是' 20.0000'。但是,网络服务的实际价值是“20.0000'”。如何正确解析它?
答案 0 :(得分:3)
JSON格式(比较http://json.org)区分 字符串和数字。字符串用引号括起来,例如
"Hello world"
"20.0000"
"20"
数字未用引号括起来,例如
20.0000
20
现在"20.0000"
和"20"
是完全不同的字符串,但是20.0000
和20
是 相同的实数 。
JSON号码转换为NSNumber
(或NSDecimalNumber
)。但是这没关系
这个数字是如何写在JSON中的,这是相同的数字。它没有
感觉说
来自网络服务的实际值是'20 .0000'
因为来自Web服务的值是实数20
,无论该数字如何
是写的。
如果您因任何原因必须区分20
和20.0000
,那么就是Web服务
必须将值写为 string (用引号括起来)。
答案 1 :(得分:0)
使用NSJSONReadingMutableLeaves
代替NSJSONReadingAllowFragments
。可以在http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html
让我知道它是否对你有所帮助。
答案 2 :(得分:0)
尝试获取双倍值:
id jsonObject1 = [NSJSONSerialization JSONObjectWithData:responseData7 options:NSJSONReadingAllowFragments error:nil]; AmountArray = [[jsonObject1 valueForKey:@"Amt"] doubleValue];