Swift JSONSerialization隐式地将double值转换为string

时间:2017-10-05 19:18:18

标签: json swift serialization

我想使用JSONSerialization.data函数将包含双字段的json字符串转换为JSON对象。我打印结果json对象,它将双字段显示为字符串。以下是示例代码:

let test = "{\"statusCode\":2.334}"

do {
    let responseJSON = try JSONSerialization.jsonObject(with: test.data(using: String.Encoding.utf16)!, options: [])
    print(responseJSON)
} catch {
   print(error)
}

responseJSON如下:

{
    statusCode = "2.334";
}

我有两个问题:

  1. 通常,所有JSON序列化引擎都会转换为double value到string或者只发生在Swift JSON序列化中?

  2. 无论如何要强制JSONSerialization输出double,而不是字符串?

1 个答案:

答案 0 :(得分:1)

这纯粹是关于如何打印出值的工件 - 你获得的价值实际上是Double。您可以通过以下方式自行确认:

import Foundation

let test = "{\"statusCode\":2.334}"

do {
    let responseJSON = try JSONSerialization.jsonObject(with: test.data(using: String.Encoding.utf16)!, options: []) as! [String: Any]
    print(responseJSON["statusCode"] is Double) // => true
} catch {
   print(error)
}