Swift JSONSerialization 作为 Int 而不是 Double
Posted
技术标签:
【中文标题】Swift JSONSerialization 作为 Int 而不是 Double【英文标题】:Swift JSONSerialization as Int instead of Double 【发布时间】:2020-02-03 17:33:14 【问题描述】:我有一个从 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
【问题讨论】:
【参考方案1】:这不是 JSON 的工作方式。 JSON 在数字类型之间没有内在的区别。因此,您看到的 JSON 与您放入其中的数据是等价的,因为 300
和 300.0
之间没有区别。 (如果你输入了300.1
,当然,你会看到更像300.1
的东西。)
如果客户想要将您的号码视为 Double,这取决于客户。但是你不能放一个 Double。你只能放一个数字。
【讨论】:
以上是关于Swift JSONSerialization 作为 Int 而不是 Double的主要内容,如果未能解决你的问题,请参考以下文章
Swift - JSONSerialization 无效的 JSON
Swift 3 JSONSerialization 序列化字典包含 \ 字符
swift 4 timeIntervalSinceReferenceDate 而不是 JSONSerialization 之后的实际日期字符串
JSONSerialization AnyObject SWIFT3 转换问题