swift - Swift JSONSerialization 作为 Int 而不是 Double
问题描述
我有一个从 Double 隐式转换为 Int 的请求。我需要保持参数格式不变。例如下面,我发送的金额为 300.0,当我打印出请求时,它作为 Int 300 而不是 Double 发送。
let params = [
"id": "xxx",
"amount": 300.0
] as [String : Any]
let jsonData = try? JSONSerialization.data(withJSONObject: params)
let url = URL(string: "BASE_URL")
var request = URLRequest(url: url!)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = jsonData
当我打印请求时,这就是我得到的:
{"id":"xxx", "amount":300}
Instead of {"id":"xxx", "amount":300.0}
解决方案
这不是 JSON 的工作方式。JSON 在数字类型之间没有内在的区别。因此,您看到的 JSON 与您放入其中的数据是等价的,因为300
和之间没有区别300.0
。(300.1
当然,如果你输入了 ,你会看到更像 的东西300.1
。)
如果客户想将您的号码视为 Double,这取决于客户。但是你不能输入一个 Double。你只能输入一个数字。
推荐阅读
- git - 当某些文件更改时,自动请求更改 Github 上的 PR
- python - 如何解决错误“无法从'serial'(未知位置)导入名称'serial'”?
- node.js - OverwriteModelError:编译后无法覆盖“用户”模型
- javascript - 如何使用纯 JavaScript 将值设置为对象内的参数?
- windows - 如何通过 CMD 禁用 MicrosoftWindowsPowerShellV2Root?
- amazon-web-services - AWS Lambda / API Gateway - 调用允许经过身份验证和未经身份验证的请求的函数的最佳方式是什么?
- javascript - 将 JSX 分配给变量时是否忽略括号
- java - A question about Producer-Consumer Model in Java
- r - 如何进行二维边距分布?
- python - 逐个单元格比较 Pandas 数据框时的性能问题