JSONEncoder 去除尾随零

JSONEncoder strips trailing zeros

有没有办法配置 JSONEncoder 在将 Double(整数)转换为 JSON 时添加尾随小数点和零?

下面的代码说明了这个问题。

import Foundation

struct NumberTest: Codable {
    let number: Double

    enum CodingKeys: String, CodingKey {
        case number
    }
}

let doubleNumber = NumberTest(number: 1.0)
let data = try? JSONEncoder().encode(doubleNumber)

print(String(data: data!, encoding: .utf8)!) // {"number":1}

期望的结果是 {"number":1.0}

不,没有(数字)方式。

JSON 只是一种独立于平台的 轻量级 data-interchange 格式 并且只有一种数字格式。 1 可以被视为 IntDouble / Float

在接收端可以在反序列化后格式化为任意格式。