Swift中对象的自动JSON序列化和反序列化
我正在寻找一种在Swift中自动反序列化" title="序列化和反序列化">序列化和反序列化类实例的方法。假设我们定义了以下类……
class Person { let firstName: String
let lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
}
…和Person
实例:
let person = Person(firstName: "John", lastName: "Doe")
的JSON表示形式person
如下:
{ "firstName": "John",
"lastName": "Doe"
}
现在,这是我的问题:
- 我如何序列化
person
实例并获取上面的JSON,而不必手动将类的所有属性添加到变成JSON的字典中? - 我如何反序列化上面的JSON并获取静态类型为类型的实例化对象
Person
?同样,我不想手动映射属性。
这是使用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(
)所示,我们将能够使用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其用于通过扬鞭的代码生成器。
以上是 Swift中对象的自动JSON序列化和反序列化 的全部内容, 来源链接: utcz.com/qa/416082.html