1

我的 json 响应的金额值类似于“20.0000”

我正在解析它

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

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

4

3 回答 3

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 服务必须将值写入字符串(用引号括起来)。

于 2013-07-11T11:10:49.220 回答
0

使用NSJSONReadingMutableLeaves而不是NSJSONReadingAllowFragments. 可以在http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html找到正确的文档

让我知道它是否对您有帮助。

于 2013-07-11T10:37:01.420 回答
0

尝试获取双精度值:

id jsonObject1 = [NSJSONSerialization JSONObjectWithData:responseData7 选项:NSJSONReadingAllowFragments 错误:nil];
 AmountArray = [[jsonObject1 valueForKey:@"Amt"] doubleValue];
于 2013-07-11T10:37:33.153 回答