考虑下一个示例:
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编码的对象。