代码之家  ›  专栏  ›  技术社区  ›  nyarian

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

  •  0
  • nyarian  · 技术社区  · 7 年前

    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 JSONEncoder ,那么,当给出这样的JSON时,在另一个平台上获取初始数据的方法是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dávid Pásztor    7 年前

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

    只是 base64encoded ,因此,您只需在另一个平台上对其进行base64解码即可恢复原始数据。但是,不需要将JSON编码的对象存储为另一个对象的属性,只需使用JSON编码的对象即可。

    推荐文章