子对象的 Swift JSONEncoder().encode

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

我可以这样做吗?

最佳答案

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

关于子对象的 Swift JSONEncoder().encode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649502/

相关文章:

swift - cocoa 不可变复选框

swift - UITapGestureRecognizer 在 ios13.1 中的 PDFView 上没有响应

ios - 标签或 TextView 中的动画字母

ios - 按对象值的属性快速排序字典

ios - SWIFT - 核心数据删除关系记录

ios - App Tracking Transparency 如何影响显示广告的应用程序? - IDFA iOS14

ios - CGPath 与 UIBezierPath

ios - 类型不符合协议(protocol)序列类型 - Swift

ios - 仅当当前值大于存储值时才覆盖 Firebase DB 值

ios - 双击主页按钮时在屏幕底部弹出。 iOS, swift