HandyJSON是一種Swift庫,用于將JSON數(shù)據(jù)轉(zhuǎn)換為Swift對(duì)象蚯瞧,同時(shí)也可以將Swift對(duì)象轉(zhuǎn)換為JSON數(shù)據(jù)勇凭。
一啃勉、導(dǎo)入HandyJSON庫
在Profile文件插入:
pod 'HandyJSON'
終端cd ~/項(xiàng)目路徑煌茴,執(zhí)行pod install随闺,等待安裝完成即可
二、創(chuàng)建Swift數(shù)據(jù)模型
創(chuàng)建Swift類蔓腐,并使其遵循HandyJSON協(xié)議矩乐。如果你需要存儲(chǔ)JSON中的所有字段,可以將類屬性定義為可選類型回论。
import HandyJSON
class User: HandyJSON {
var name: String?
var age: Int?
required init() {}
}
三绰精、解析JSON數(shù)據(jù)
使用JSONDeserializer解析JSON撒璧,并使用HandyJSON協(xié)議解析成Swift對(duì)象透葛。
避免報(bào)錯(cuò)
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)
如果是轉(zhuǎn)成模型數(shù)組笨使,則可以這樣:
let jsonArray = [
["name": "Tom", "age": 19],
["name": "Jerry", "age": 28]
]
let userArray = Array<User>.deserialize(from: jsonArray as? Array<Any>)
四、將Swift對(duì)象轉(zhuǎn)換為JSON數(shù)據(jù)
使用toJSONString()方法將Swift對(duì)象轉(zhuǎn)換為JSON字符串僚害。
let user = User()
user.name = "Tom"
user.age = 18
// 1硫椰、轉(zhuǎn)換成json數(shù)據(jù)
user.toJSON()
// 2、轉(zhuǎn)換成json字符串
if let jsonString = user.toJSONString() {
print(jsonString) // 打印結(jié)果:{"name":"Tom", "age":18}
}
以上就是使用HandyJSON的基本方法萨蚕。需要注意的是靶草,除了標(biāo)量類型的屬性(例如String、Int岳遥、Double)以外奕翔,所有其他自定義類型(例如數(shù)組,字典等)也必須遵循HandyJSON協(xié)議浩蓉。
如果不記得轉(zhuǎn)換方法派继,可以封裝一個(gè)類、或者寫個(gè)Extension擴(kuò)展類去實(shí)現(xiàn)所有轉(zhuǎn)換方法捻艳。避免使用時(shí)忘記驾窟,每次都要去找文檔了。