我正在尝试解析看起来像这样的JSON结构:
{"amount": -9.45}
使用JSONSerializer
,金额将被解析为浮点数,从而导致数字出错。这是我目前的代码:
import Foundation
let jsonData = "{\"amount\": -9.45}".data(using: .utf8)!
let jsonObject = try! JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: Any]
jsonObject["amount"] // -9.449999999999999
有没有办法可以获取被解析为浮点数的基础字符串,以便我自己解析它?
注意:
编辑:在审核了Apple提供的Swift version of JSONSerialization
代码作为开源基础项目的一部分后,我不相信使用库存类可以解决这个问题。我made a patched version of the class将所有数字解析为Decimal
而不是Int
或Double
,这解决了我的问题。