swift中json的解析

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的内部数据结构定义就可以了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值