Swift:通过JSONENCODER编码内部数据类型的变量.如何对其进行正确的序列化



考虑下一个示例:

import Foundation 
class UDFrame: Codable {
    var data:Data
    init(data:Data) {
        self.data = data
    }
}

class Event: Codable {
    var name:String
    init(name:String) {
        self.name = name
    }
}
let encoder = JSONEncoder()
let event = Event(name: "eventName")
let serializedEvent = try encoder.encode(event)
let frame = UDFrame(data: serializedEvent)
let serializedFrame = try encoder.encode(frame)
print(String(data: serializedFrame, encoding: String.Encoding.utf8)!)

print语句的结果是:{"data":"eyJuYW1lIjoiZXZlbnROYW1lIn0="}

我的问题是如何将"eventName"从此drivel中取出?

,如果可能的话,您可以解释为什么Data通过JSONEncoder序列化,当给出这样的JSON时,在另一个平台上获取初始数据的方法是什么?

您可以简单地使用JSONDecoder来解码JSON编码的Data

Data仅仅是base64encoded,因此您只需要在另一个平台上将其解码即可恢复原始数据。但是,无需存储JSON编码的对象作为另一个对象的属性,您可以简单地使用JSON编码的对象。

最新更新