swift中json的解析看到了动态语言的强大,在c++中解析个东西很麻烦,在swift中只要用结构体定义好数据,就可以完成绝大部分解析工作,这让我彻底的认识到动态语言相对于静态语言的这部分优势
需要Decodable接口
struct AllData:Decodable {
var results: [SingleData]?
}
struct SingleData:Decodable {
var name: Name?
var email:String?
var phone:String?
var picture:Picture?
}
struct Name:Decodable{
var first:String?
var last:String?
}
struct Picture:Decodable {
var large:String?
}
解析的代码
do{
let okData = try JSONDecoder().decode(AllData.self, from: loadedData)
let firstName = okData.results?[0].name?.first
let lastName = okData.results?[0].name?.last
let fullName: String? = {
guard let okFirstName = firstName, let okLastName = lastName else{ return nil }
return okFirstName + " " + okLastName
}()
let email = okData.results?[0].email
let phone = okData.results?[0].phone
let picture = okData.results?[0].picture?.large
let aUser = User(name: fullName, email: email, number: phone, image: picture)
DispatchQueue.main.async {
self.settingInfo(user: aUser)
}
}catch{
DispatchQueue.main.async {
self.popAlert(withTitle: "Sorry")
}
}
就这么简单,根据json的内部数据结构定义就可以了