欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

ios泛型json轉(zhuǎn)對(duì)象

iOS開(kāi)發(fā)中,經(jīng)常會(huì)涉及到將從后端請(qǐng)求的json數(shù)據(jù)轉(zhuǎn)換成對(duì)象的操作。在這個(gè)過(guò)程中,我們可以使用泛型來(lái)簡(jiǎn)化代碼,并且可以避免很多不必要的類型轉(zhuǎn)換。

首先,我們需要定義一個(gè)泛型方法來(lái)完成json轉(zhuǎn)對(duì)象的操作。

func parseJSON<T: Decodable>(json: Data) throws -> T {
let decoder = JSONDecoder()
return try decoder.decode(T.self, from: json)
}

在該方法中,我們使用了Swift 4中新增的Codable協(xié)議。Codable協(xié)議是Encodable和Decodable兩個(gè)協(xié)議的組合,用來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的編碼和解碼。而我們?cè)诜盒皖愋蛥?shù)中,限定了T必須實(shí)現(xiàn)Decodable協(xié)議。

接下來(lái),我們可以在使用時(shí)直接傳入需要轉(zhuǎn)換成的對(duì)象類型,然后調(diào)用該方法進(jìn)行轉(zhuǎn)換:

struct User: Decodable {
var name: String
var age: Int
}
let json = "{\"name\":\"Tom\",\"age\":18}".data(using: .utf8)!
let user = try parseJSON(json: json) as User
print(user.name) // Tom
print(user.age) // 18

最后,需要注意的是,這個(gè)方法可能拋出異常,因?yàn)閖son數(shù)據(jù)格式不正確,或者轉(zhuǎn)換成的對(duì)象類型不合法。