Swift JSONEncoder().对子对象进行编码



我有一个带有几个方法和属性的父类:

class Animal {
var var1: ...
var var2: ...
func func1() {}
func func2() {}
}

儿童班:

class Dog: Animal, Codable {
var name = ""
}

我需要向父类添加一个方法,该方法将返回子类的JSONEncoder().encode的结果。类似于:

let dog = Dog()
dog.name = "Bob"
let jsonString = dog.jsonString() // {"name":"Bob"}

我能做这个吗?

只需使用encode…的结果创建一个String

extension Encodable {
func jsonString() -> String {
let data = try! JSONEncoder().encode(self)
return String(data: data, encoding: .utf8)!
}
}
let dog = Dog()
dog.name = "Bob"
dog.jsonString()
// {"name":"Bob"}

最新更新