私が持っている最良のソリューションはこれですが、エンコード/デコードのオーバーヘッドがあります。問題の例から、次の
extension Decodable {
init(_ any: Any) throws {
let data = try JSONSerialization.data(withJSONObject: any, options: .prettyPrinted)
let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:sszzz"
decoder.dateDecodingStrategy = .formatted(dateFormatter)
self = try decoder.decode(Self.self, from: data)
}
}
結果は
let person = Person(from: dictionary)
あなたが他の道を行くのに興味があるなら
が、これは役立つかもしれないだろう
https://stackoverflow.com/a/46329055/1453346