SwiftでJSONエンコードするときに数字の桁数を指定する


SwiftでJSONデコードするときに数字の桁数を指定する方法です。 文字列になってしまいましたが、以下のように encode メソッドを書くことで桁数を指定します。

import Foundation

struct MyStruct: Encodable {
    let number: Double

    enum CodingKeys: String, CodingKey {
        case number
    }

    func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(String(format: "%05f", number), forKey: .number)
    }
}

let myStruct = MyStruct(number: 1.0 / 3.0)
let data = try! JSONEncoder().encode(myStruct)
print(String(data: data, encoding: String.Encoding.utf8)!)
{"number":"0.333333"}