Codable and JSON
Codable is a magic label that lets Swift automatically translate your custom types into JSON text, and back again.
In this page:
Encoding a Struct to JSON
A struct conforming to Codable can be turned into JSON Data using JSONEncoder, which is then typically converted to a printable String.
Example: Encoding a Struct to JSON
import Foundation
struct User: Codable {
var name: String
var age: Int
}
let user = User(name: "Nina", age: 29)
let data = try! JSONEncoder().encode(user)
print(String(data: data, encoding: .utf8)!)
Login to try C/C++/Java/PHP code in the editor
Decoding JSON Back into a Struct
JSONDecoder parses JSON Data back into a Codable type, reconstructing the original structured value.
Example: Decoding JSON Back into a Struct
import Foundation
struct User: Codable {
var name: String
var age: Int
}
let json = "{\"name\":\"Leo\",\"age\":34}"
let data = json.data(using: .utf8)!
let decoded = try! JSONDecoder().decode(User.self, from: data)
print("\(decoded.name) is \(decoded.age)")
Login to try C/C++/Java/PHP code in the editor
Common Mistakes
- Forgetting a type must conform to
Codable(orEncodable/Decodable) beforeJSONEncoder/JSONDecodercan process it. - Assuming property names in JSON always match Swift property names exactly; mismatches require a custom
CodingKeysenum. - Forgetting
JSONEncoder().encode(_:)andJSONDecoder().decode(_:from:)are both throwing functions requiringtry.
Chapter Summary
- A type conforming to
Codable(bothEncodableandDecodable) can be automatically converted to and from JSON. JSONEncoder().encode(_:)turns aCodablevalue intoDatacontaining JSON.JSONDecoder().decode(_:from:)parsesDataback into a Swift type.CodingKeyslets you customize how property names map to JSON keys.
🔒
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: