我正在尝试学习如何使用 AlamoFire 并且我想获取此 struct MyData 内的结构的值。如何实现这个目标?
import Foundation
import Alamofire
struct MyData : Codable {
let id: Int
let uid : String
let password : String
let first_name : String
let last_name :String
let username : String
let email : String
let avatar : String
let gender : String
let phone_number : String
let social_insurance_number : String
let date_of_birth : String
struct employment : Codable {
let title : String
let key_skill : String
}
struct address : Codable {
var city : String
var street_name : String
var street_address : String
var zip_code : String
var state : String
var country : String
struct coordinates : Codable {
var lat : Int
var lng : Int
}
}
struct credit_card : Codable{
let cc_number : String
}
struct subscription : Codable {
var plan : String
var status : String
var payment_method : String
var term : String
}
}
func getApi() {
let url = "https://random-data-api.com/api/v2/users"
AF.request(url).responseData { response in
debugPrint(response)
guard let data = response.data
else{
return
}
do {
let decoder = JSONDecoder()
let json = try decoder.decode(MyData?.self, from: data)
decoder.keyDecodingStrategy = .convertFromSnakeCase
print("SOCIAL INSURANCE NUMBER : \(String(describing: json!.social_insurance_number))")
}
catch{
print(error)
}
}
}
我尝试从 api 获取数据。我的数据模型有一个结构内的结构。我无法获取父结构内的结构,但我可以获取父结构中声明的变量的值
在您的
MyData
中插入以下代码以继续解码。
let employment: Employment
let address: Address
let credit_card: CreditCard
let subscription: Subscription
不要忘记将结构体上的第一个字母大写,添加
var coordinates
并将 Int
更改为 Double
。
struct Employment: Codable {
// ...
}
struct Address: Codable {
// ...
var coordinates: Coordinates // Add this
struct Coordinates: Codable {
var lat: Double // Change Int to Double
var lng: Double // Change Int to Double
}
}
struct CreditCard: Codable {
// ...
}
struct Subscription: Codable {
// ...
}