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

Swift JSON 解析类 Unbox

回复:0  查看:3875  感兴趣:28  赞:3  
简单易用的Swift JSON 解析类 Unbox。
示例代码:
//JSON数据
{
    "name": "John",
    "age": 27
}

//结构体User
struct User {
    let name: String
    let age: Int
}

//User扩展Unboxable 
extension User: Unboxable {
    init(unboxer: Unboxer) throws {
        self.name = try unboxer.unbox(key: "name")
        self.age = try unboxer.unbox(key: "age")
    }
}


//解析
let user: User = try unbox(dictionary: dictionary)
//或
let user: User = try unbox(data: data)
指定KeyPath:
//JSON格式
{
    "name": "John",
    "age": 27,
    "activities": {
        "running": {
            "distance": 300
        }
    },
    "devices": [
        "Macbook Pro",
        "iPhone",
        "iPad"
    ]
}

struct User {
    let name: String
    let age: Int
    let runningDistance: Int
    let primaryDeviceName: String
}

extension User: Unboxable {
    init(unboxer: Unboxer) throws {
        self.name = try unboxer.unbox(key: "name")
        self.age = try unboxer.unbox(key: "age")
        //下面两行指定keyPath
        self.runningDistance = try unboxer.unbox(keyPath: "activities.running.distance")
        self.primaryDeviceName = try unboxer.unbox(keyPath: "devices.0")
    }
}

相关开源代码