我正在寻找一种在 Swift 中自动序列化和反序列化类实例的方法。假设我们已经定义了以下类……
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")
person
的 JSON 表示形式如下:
{
"firstName": "John",
"lastName": "Doe"
}
现在,这是我的问题:
person
实例并获取上述 JSON,而无需手动将类的所有属性添加到转换为 JSON 的字典中?Person
类型的实例化对象?同样,我不想手动映射属性。以下是在 C# 中使用 Json.NET 的方法:
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 协议(protocol)。示例
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 协议(protocol)。
替代可以是JSONCodable由 Swagger's 使用代码生成器。
https://stackoverflow.com/questions/26820720/
相关文章:
json - 是否为 null 有效 JSON(4 字节,仅此而已)
javascript - jQuery AJAX 调用带有 JSON 返回的 PHP 脚本
python - 通过url获取json数据并在python中使用(simplejson)
java - 将元数据添加到 RESTful JSON 响应的最佳实践是什么?
javascript - 如何让 AngularJS 输出转义 HTML
json - IE9 JSON 数据 "do you want to open or save th
xml - 为什么人们希望将 Json 和 XML 作为输出传递到他们的 REST 接口(inter