
Swift 2017-05-19 11:09
Swift JSON 解析类 Unbox
回复:0 查看:6489 感兴趣:29 赞:4
简单易用的Swift JSON 解析类 Unbox。
示例代码:
指定KeyPath:
示例代码:
01 | //JSON数据 |
02 | { |
03 | "name" : "John" , |
04 | "age" : 27 |
05 | } |
06 |
07 | //结构体User |
08 | struct User { |
09 | let name: String |
10 | let age: Int |
11 | } |
12 |
13 | //User扩展Unboxable |
14 | extension 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 | //解析 |
23 | let user: User = try unbox(dictionary: dictionary) |
24 | //或 |
25 | let user: User = try unbox(data: data) |
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 |
17 | struct User { |
18 | let name: String |
19 | let age: Int |
20 | let runningDistance: Int |
21 | let primaryDeviceName: String |
22 | } |
23 |
24 | extension 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 | } |
相关开源代码
EFIconFont: 一个用 Swift 实现的 IconFont 封装
Swift Zip文件压缩与解压框架
EFResume - 一个普通的 Swift 简历模板
Swift 优雅的定时器及执行工具库 Each
Swift 解析、格式化及验证国际电话号码工具库 PhoneNumberKit
Swift 版 FlatBuffers(跨平台序列化库)FlatBuffersSwift
Swift 编写的 Github API 客户端 Github.swift
Swift OAuth授权库 SwiftyOAuth
Swift 音频处理库 TempiFFT
iOS通知中心封装库SwiftNotificationCenter