Swift51.com
Swift 头像
Swift  2017-05-19 11:09

Swift JSON 解析类 Unbox

回复:0  查看:6489  感兴趣:29  赞:4  
简单易用的Swift JSON 解析类 Unbox。
示例代码:
01//JSON数据
02{
03    "name": "John",
04    "age": 27
05}
06 
07//结构体User
08struct User {
09    let name: String
10    let age: Int
11}
12 
13//User扩展Unboxable
14extension User: Unboxable {
15    init(unboxer: Unboxer) throws {
16        self.name = try unboxer.unbox(key: "name")
17        self.age = try unboxer.unbox(key: "age")
18    }
19}
20 
21 
22//解析
23let user: User = try unbox(dictionary: dictionary)
24//或
25let user: User = try unbox(data: data)
指定KeyPath:
01//JSON格式
02{
03    "name": "John",
04    "age": 27,
05    "activities": {
06        "running": {
07            "distance": 300
08        }
09    },
10    "devices": [
11        "Macbook Pro",
12        "iPhone",
13        "iPad"
14    ]
15}
16 
17struct User {
18    let name: String
19    let age: Int
20    let runningDistance: Int
21    let primaryDeviceName: String
22}
23 
24extension User: Unboxable {
25    init(unboxer: Unboxer) throws {
26        self.name = try unboxer.unbox(key: "name")
27        self.age = try unboxer.unbox(key: "age")
28        //下面两行指定keyPath
29        self.runningDistance = try unboxer.unbox(keyPath: "activities.running.distance")
30        self.primaryDeviceName = try unboxer.unbox(keyPath: "devices.0")
31    }
32}

相关开源代码