使用 Swift 将 JSON 响应解析为数据模型 (LinkedIn API)
Parse JSON response into a data model with Swift (LinkedIn API)
我正在使用 LinkedInSwift 在用户验证其凭据后获取用户数据。我已经能够打印出我的 response
来显示他们的数据。但我现在正在尝试将该数据解析为数据模型。
我有一个 User
class:
typealias JSON = [String: Any]
class User {
var id: String?
var firstName: String?
var lastName: String?
init(json: JSON) {
guard let id = json["id"] as? String, let firstName = json["firstName"] as? String, let lastName = json["lastName"] as? String else { return }
self.id = id
self.firstName = firstName
self.lastName = lastName
}
这里是 LinkedIn 的获取方法:
linkedinHelper.authorizeSuccess({ (lsToken) -> Void in
//Login success lsToken
print("User has logged in succesfully!")
//Check if the user user is logged in and perform and action if they are.
if self.linkedinHelper.lsAccessToken != nil {
self.linkedinHelper.requestURL("https://api.linkedin.com/v1/people/~:(id,first-name,last-name)?format=json",
requestType: LinkedinSwiftRequestGet,
success: { (response) -> Void in
print(response)
//Request success response
}) { [unowned self] (error) -> Void in
print(error.localizedDescription)
//Encounter error
}
} else {
}
}, error: { (error) -> Void in
print("Uh oh, there was an issue.")
//Encounter error: error.localizedDescription
}, cancel: { () -> Void in
print("Cancelled")
//User Cancelled!
})
}
我在各个地方都看过这方面的内容,但似乎唯一的示例和文档就止于 response
或者需要第三方框架来解析数据。有人可以帮助指导我实现我的目标吗?
更新
打印结果response
:
<LSResponse - data: {
firstName = Joe;
id = htcxTEeLk4;
lastName = Smith;
},
class User {
var id: String?
var firstName: String?
var lastName: String?
init(json: JSON) {
guard let id = json["id"] as? String, let firstName = json["firstName"] as? String, let lastName = json["lastName"] as? String else { return }
self.id = id
self.firstName = firstName
self.lastName = lastName
}
linkedinHelper.authorizeSuccess({ (lsToken) -> Void in
//Login success lsToken
print("User has logged in succesfully!")
//Check if the user user is logged in and perform and action if they are.
if self.linkedinHelper.lsAccessToken != nil {
self.linkedinHelper.requestURL("https://api.linkedin.com/v1/people/~:(id,first-name,last-name)?format=json",
requestType: LinkedinSwiftRequestGet,
success: { (response) -> Void in
let user = User(json: response.jsonObject)
//Request success response
}) { [unowned self] (error) -> Void in
print(error.localizedDescription)
//Encounter error
}
} else {
}
}, error: { (error) -> Void in
print("Uh oh, there was an issue.")
//Encounter error: error.localizedDescription
}, cancel: { () -> Void in
print("Cancelled")
//User Cancelled!
})
}
我正在使用 LinkedInSwift 在用户验证其凭据后获取用户数据。我已经能够打印出我的 response
来显示他们的数据。但我现在正在尝试将该数据解析为数据模型。
我有一个 User
class:
typealias JSON = [String: Any]
class User {
var id: String?
var firstName: String?
var lastName: String?
init(json: JSON) {
guard let id = json["id"] as? String, let firstName = json["firstName"] as? String, let lastName = json["lastName"] as? String else { return }
self.id = id
self.firstName = firstName
self.lastName = lastName
}
这里是 LinkedIn 的获取方法:
linkedinHelper.authorizeSuccess({ (lsToken) -> Void in
//Login success lsToken
print("User has logged in succesfully!")
//Check if the user user is logged in and perform and action if they are.
if self.linkedinHelper.lsAccessToken != nil {
self.linkedinHelper.requestURL("https://api.linkedin.com/v1/people/~:(id,first-name,last-name)?format=json",
requestType: LinkedinSwiftRequestGet,
success: { (response) -> Void in
print(response)
//Request success response
}) { [unowned self] (error) -> Void in
print(error.localizedDescription)
//Encounter error
}
} else {
}
}, error: { (error) -> Void in
print("Uh oh, there was an issue.")
//Encounter error: error.localizedDescription
}, cancel: { () -> Void in
print("Cancelled")
//User Cancelled!
})
}
我在各个地方都看过这方面的内容,但似乎唯一的示例和文档就止于 response
或者需要第三方框架来解析数据。有人可以帮助指导我实现我的目标吗?
更新
打印结果response
:
<LSResponse - data: {
firstName = Joe;
id = htcxTEeLk4;
lastName = Smith;
},
class User {
var id: String?
var firstName: String?
var lastName: String?
init(json: JSON) {
guard let id = json["id"] as? String, let firstName = json["firstName"] as? String, let lastName = json["lastName"] as? String else { return }
self.id = id
self.firstName = firstName
self.lastName = lastName
}
linkedinHelper.authorizeSuccess({ (lsToken) -> Void in
//Login success lsToken
print("User has logged in succesfully!")
//Check if the user user is logged in and perform and action if they are.
if self.linkedinHelper.lsAccessToken != nil {
self.linkedinHelper.requestURL("https://api.linkedin.com/v1/people/~:(id,first-name,last-name)?format=json",
requestType: LinkedinSwiftRequestGet,
success: { (response) -> Void in
let user = User(json: response.jsonObject)
//Request success response
}) { [unowned self] (error) -> Void in
print(error.localizedDescription)
//Encounter error
}
} else {
}
}, error: { (error) -> Void in
print("Uh oh, there was an issue.")
//Encounter error: error.localizedDescription
}, cancel: { () -> Void in
print("Cancelled")
//User Cancelled!
})
}