如何从JSON响应中解析十进制值

时间:2013-07-11 09:35:50

标签: iphone ios json parsing

我的json响应的数值类似于" 20.0000"

解析它就像

id jsonObject1 = [NSJSONSerialization JSONObjectWithData:responseData7 options:NSJSONReadingAllowFragments error:nil];
AmountArray = [jsonObject1 valueForKey:@"Amt"];

我的问题是,当我打印(检查)jsonObject1时,金额值只是' 20'而不是' 20.0000'。但是,网络服务的实际价值是“20.0000'”。如何正确解析它?

3 个答案:

答案 0 :(得分:3)

JSON格式(比较http://json.org)区分 字符串数字。字符串用引号括起来,例如

"Hello world"
"20.0000"
"20"

数字未用引号括起来,例如

20.0000
20

现在"20.0000""20"是完全不同的字符串,但是20.000020 相同的实数

JSON号码转换为NSNumber(或NSDecimalNumber)。但是这没关系 这个数字是如何写在JSON中的,这是相同的数字。它没有 感觉说

  

来自网络服务的实际值是'20 .0000'

因为来自Web服务的值是实数20,无论该数字如何 是写的。

如果您因任何原因必须区分2020.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];