用 Codable 协议实现快速 JSON 解析
refer: https://swiftcafe.io/post/codable
本文的大体意思:
Codable是一个能够快速解析JSON的协议。它本质上是两个Protocol的集合:Decodable&Encodable.
下面从一个例子作为切入点:
struct Person : Codable {
var name: String
var gender: String
var age: Int
}
上面的代码块除了声明 Codable 之外,这个实体类并没有其他代码,只有几个属性声明。 如果我们需要把他的实例编码成 JSON 字符串,可以这样:
let person = Person(name: "swift", gender: "male", age: 24)
let encoder = JSONEncoder()
let data = try! encoder.encode(person)
let encodedString = String(data: data, encoding: .utf8)!
print(encodedString) // 输出 {"name":"swift","age":24,"gender":"male"}
就像这样 我们就完成了对 person型数据的解码 解析成了我们想要的JSON字符串,就是最后输出的字典型字符串。
但是有的时候 我们不想解析此实例中的所有属性,而如果声明继承了 Codable 协议,这个实例中的所有属性都会被算作编码范围内。
如果你只想对一部分属性进行编解码,也是有办法的,可以在你的自定义类中声明一个 CodingKeys 枚举属性:
struct Person : Codable {
var name: String
var gender: String = ""
var age: Int
enum CodingKeys: String, CodingKey {
case name
case age
}
}
还是之前的 Person 类,这次我们加入了 CodingKeys 属性,并且定义了两个枚举值 name 和 age,只有在 CodingKeys 中指定的属性名才会进行编码,如果我们再次对 Person 进行编码,得到的将会是这样的结果:
{“name”:“swift”,“age”:24}

浙公网安备 33010602011771号