Skip to content

Instantly share code, notes, and snippets.

@yury2me
Created May 26, 2022 23:27
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 yury2me/3e53113bfc16511b9202496b37a05dcc to your computer and use it in GitHub Desktop.
Save yury2me/3e53113bfc16511b9202496b37a05dcc to your computer and use it in GitHub Desktop.
Polymorphic JSON Encoding ignores Subclass properties
{
"name" : "Paul",
"age" : 47
}
{
"name" : "David",
"age" : 28
}
import Foundation
class Person: Encodable {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
class Worker: Person {
var job: String
init(job: String, name: String, age: Int) {
self.job = job
super.init(name: name, age: age)
}
}
var paul = Person(name: "Paul", age: 47)
var baker = Worker(job: "Baker", name: "David", age: 28)
var jsonEncoder = JSONEncoder()
jsonEncoder.outputFormatting = .prettyPrinted
var jsonDataPaul = try jsonEncoder.encode(paul)
var jsonPaul = String(data: jsonDataPaul, encoding: String.Encoding.utf8)!
print(jsonPaul)
print("\n")
var jsonDataBaker = try jsonEncoder.encode(baker)
var jsonBaker = String(data: jsonDataBaker, encoding: String.Encoding.utf8)!
print(jsonBaker)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment