Swift JSONEncoder()。encode子对象

时间:2018-08-02 08:55:04

标签: swift

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

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"}

我可以这样做吗?

1 个答案:

答案 0 :(得分:1)

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

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"}