Swift3中对象的序列化和反序列化

时间:2016-11-09 09:39:36

标签: ios json swift serialization

我想知道是否有可能在swift 3中对对象进行序列化和反序列化。

我有一个这样的对象:

class Credentials{
    var username:String;
    var password:String;
    init(){
        username = "";
        password = "";
    }
}

我想将这个类转换为json(反之亦然),通过HTTP post发送它。

我不想使用第三方库。

感谢您的回答。

1 个答案:

答案 0 :(得分:3)

首先,没有必要使用类,结构就足够了。

带有可用初始化程序的简单解决方案,期望JSON字符串和变量jsonRepresentation

struct Credentials {
   var username = ""
   var password = ""

   init(username: String, password:String) {
      self.username = username
      self.password = password
   }

   init?(json : String) {
      guard let data = json.data(using: .utf8),
         let jsonDict = try? JSONSerialization.jsonObject(with: data, options: []) as? [String:String],
         let username = jsonDict?["username"],
         let password = jsonDict?["password"] else { return nil }
      self.username = username
      self.password = password
   }

  var jsonRepresentation : String {
     let jsonDict = ["username" : username, "password" : password]
     if let data = try? JSONSerialization.data(withJSONObject: jsonDict, options: []),
        let jsonString = String(data:data, encoding:.utf8) {
        return jsonString
     } else { return "" }
  }
}