2016-11-09 52 views
0

一个对象,我想知道的反序列化,如果有做一个序列化的可能性,并迅速3.系列化和Swift3

对象的反序列化我有一个这样的对象:

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

我想将此类转换为json(反之亦然)以通过HTTP发送它。

我不想使用第三方库。

感谢您的回答。

+0

请告诉我这个问题的简单解决方案?只是为他们制定方法?你可以用json初始化该类 – Tj3n

+0

通常在Objective-C中,我们声明(和代码)' - (id)initWithJSONDict:(NSDictionary *)jsonDict'并且对于转换,它依赖于(字符串表示,NSData之一,字典之一? – Larme

回答

3

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

与failable初始化期待一个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 "" } 
    } 
}