Swift:内部数据类型变量已通过 JSONEncoder 编码。如何正确反序列化它?

Swift: inner Data-typed variable was encoded via JSONEncoder. How to deserialize it properly?

考虑下一个例子:

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" 摆脱这种胡言乱语?

并且,如果可能的话,您能否解释一下为什么 DataJSONEncoder 以这种方式序列化,以及当 JSON 时如何在另一个平台上获取初始数据]给出了?

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

Data就是base64encoded,所以你只需要在另一个平台上对其进行base64解码即可取回原始数据。但是,无需将 JSON 编码的对象存储为另一个对象的 属性,您可以简单地使用 JSON 编码的对象。