我正在寻找一种在Swift中自动序列化和反序列化类实例的方法。假设我们定义了以下类……
class Person { let firstName: String let lastName: String init(firstName: String, lastName: String) { self.firstName = firstName self.lastName = lastName } }
…和Person实例:
Person
let person = Person(firstName: "John", lastName: "Doe")
的JSON表示形式person如下:
person
{ "firstName": "John", "lastName": "Doe" }
现在,这是我的问题:
这是使用Json.NET在C#中执行此操作的方法:
var person = new Person("John", "Doe"); string json = JsonConvert.SerializeObject(person); // {"firstName":"John","lastName":"Doe"} Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);
如WWDC2017 @ 24:48( Swift 4 )所示,我们将能够使用Codable协议。例
public struct Person : Codable { public let firstName:String public let lastName:String public let location:Location }
序列化
let payload: Data = try JSONEncoder().encode(person)
反序列化
let anotherPerson = try JSONDecoder().decode(Person.self, from: payload)
请注意,所有属性都必须符合Codable协议。
一个 替代方案 可以是JSONCodable其用于通过扬鞭的代码生成器。