Avatar
omochimetaru 5/14/2019 1:13 PM
import Foundation struct HB : Decodable { var heartbeatInterval: Int enum CodingKeys : String, CodingKey { case heartbeatInterval = "heartbeat_interval" } } let json = #"{ "heartbeat_interval": 30 }"# let d = JSONDecoder() d.keyDecodingStrategy = .convertFromSnakeCase let data = json.data(using: .utf8)! let x = try d.decode(HB.self, from: data) dump(x)
1:14 PM
↑CodingKeysでスネークケースにするのと、keyDecodingStrategyでスネークケースにするのを同時に使うと、デコードに失敗するんだけど、どういう考え方なんだ・・・?
1:15 PM
両方考慮される結果、CodingKeysはスネークケースを期待してて、Decoder側はJSONのスネークケースから変換されたキャメルケースを投げてて、ミスマッチする?