Key and Date Decoding Strategies
Use snake_case and date strategies.
Decoding Strategies Overview
Instead of writing a CodingKeys enum for every type, you can set a global strategy on the decoder. Strategies transform keys and parse dates uniformly across all decoded types.
import Foundation
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
print("Strategy configured")convertFromSnakeCase
Setting keyDecodingStrategy = .convertFromSnakeCase automatically maps keys like first_name to the camelCase property firstName — no CodingKeys needed.
import Foundation
struct User: Codable {
var firstName: String
var lastName: String
}
let json = "{\"first_name\":\"Ada\",\"last_name\":\"Lovelace\"}"
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let u = try decoder.decode(User.self, from: json.data(using: .utf8)!)
print(u.firstName, u.lastName)All lessons in this course
- CodingKeys for Renaming
- Key and Date Decoding Strategies
- Manual encode(to:) and init(from:)
- Decoding Heterogeneous JSON