0

考虑下一个例子:

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

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

4

1 回答 1

1

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

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

于 2018-12-19T17:26:16.513 回答