HandyJSON是一种Swift库,用于将JSON数据转换为Swift对象,同时也可以将Swift对象转换为JSON数据。
一、导入HandyJSON库
在Profile文件插入:
pod 'HandyJSON'
终端cd ~/项目路径,执行pod install,等待安装完成即可
二、创建Swift数据模型
创建Swift类,并使其遵循HandyJSON协议。如果你需要存储JSON中的所有字段,可以将类属性定义为可选类型。
import HandyJSON
class User: HandyJSON {
var name: String?
var age: Int?
required init() {}
}
三、解析JSON数据
使用JSONDeserializer解析JSON,并使用HandyJSON协议解析成Swift对象。
避免报错
No exact matches in call to static method 'deserialize'
data必须声明为String?,[String: Any]?,NSDictionary?
let jsonDict: NSDictionary = ["name": "Tom", "age": 12]
if let user = JSONDeserializer<User>.deserializeFrom(dict: jsonDict) {
print(user.name)
print(user.age)
}
或者
let jsonDict: NSDictionary = ["name": "Tom", "age": 12]
let user = User.deserialize(from: jsonDict)
如果是转成模型数组,则可以这样:
let jsonArray = [
["name": "Tom", "age": 19],
["name": "Jerry", "age": 28]
]
let userArray = Array<User>.deserialize(from: jsonArray as? Array<Any>)
四、将Swift对象转换为JSON数据
使用toJSONString()方法将Swift对象转换为JSON字符串。
let user = User()
user.name = "Tom"
user.age = 18
// 1、转换成json数据
user.toJSON()
// 2、转换成json字符串
if let jsonString = user.toJSONString() {
print(jsonString) // 打印结果:{"name":"Tom", "age":18}
}
以上就是使用HandyJSON的基本方法。需要注意的是,除了标量类型的属性(例如String、Int、Double)以外,所有其他自定义类型(例如数组,字典等)也必须遵循HandyJSON协议。
如果不记得转换方法,可以封装一个类、或者写个Extension扩展类去实现所有转换方法。避免使用时忘记,每次都要去找文档了。