Skip to content

Instantly share code, notes, and snippets.

@vrutberg
Created June 11, 2017 19:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vrutberg/8e7df779642fb4c4ec8f372315e671ab to your computer and use it in GitHub Desktop.
Save vrutberg/8e7df779642fb4c4ec8f372315e671ab to your computer and use it in GitHub Desktop.
import UIKit
class Person: Codable {
let givenName: String
let surName: String
let middleName: String?
let gender: Gender
init(givenName: String, surName: String, middleName: String?, gender: Gender) {
self.givenName = givenName
self.surName = surName
self.middleName = middleName
self.gender = gender
}
enum Gender: String, Codable {
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let rawValue = try container.decode(String.self)
self = Gender.init(rawValue: rawValue) ?? Gender.unknown
}
case male
case female
case unknown
}
}
let data = "{ \"givenName\": \"Viktor\", \"surName\": \"Rutberg\", \"gender\": \"android\" }".data(using: .utf8)
let person = try? JSONDecoder().decode(Person.self, from: data!)
print(person?.givenName)
print(person?.surName)
print(person?.middleName)
print(person?.gender.rawValue)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment