【发布时间】:2017-06-19 11:49:01
【问题描述】:
您好,我对 iOS 编程很陌生。我必须使用 api 登录并获取“成员数据”并显示它。 这是我到目前为止所拥有的:
@IBAction func loginButton(_ sender: Any) {
let usr = usernameTextField.text
let pwdCode = passwordTextField.text
let iturl = NSURL(string: "something?UserName=\(usr!)&Password=\(pwdCode!)")
let session = URLSession.shared
var request = URLRequest(url: iturl as! URL)
do {
let auth = try JSONSerialization.data(withJSONObject: login, options: .prettyPrinted)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = auth
let task = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
print("Got data \(data) response: \(response)with error \(error)")
print("Done.")
})task.resume()
在回复中我收到了这个
Got data Optional(41 bytes)
response: Optional(<NSHTTPURLResponse: 0x608000228760> { URL: something } { status code: 200, headers {
"Cache-Control" = "s-maxage=0";
"Content-Encoding" = gzip;
"Content-Security-Policy" = "referrer origin-when-cross-origin";
"Content-Type" = "application/json;charset=UTF-8";
Date = "Mon, 19 Jun 2017 07:08:33 GMT";
"Transfer-Encoding" = Identity;
Vary = "Accept-Encoding";
"X-XSS-Protection" = "1; mode=block";
} }) with error nil
Done.
这是 url 给出的 Json 响应:
{
"nonprimary":null,
"memtier":[
],
"memcard":[
{
"attributes":{
"type":"Membership_card__c",
"url":"/services/data/v37.0/something"
},
"Effective_End_Date__c":"2018-04-13",
"Effective_Start_Date__c":"2017-04-13",
"Member__c":"a0A2800000Psomething",
"Id":"a0B28000something"
}
],
"member":{
"attributes":{
"type":"Member__c",
"url":"/services/data/v37.0/sobjects/something"
},
"Contact__c":"0032800000wk79XAAQ",
"Enrollment_Channel__c":"Web",
"Registered_date__c":"2017-04-13",
"Name":"something",
"Member_Image__c":"<img src=\"https://ap2something" width=\"300\" height=\"281\"></img>",
"Member_Number__c":"000000974",
"Membership_Card__c":"a0B2800000IJPn7EAH",
"Member_Tier__c":"Ruby",
"Member_Type__c":"Individual",
"Points__c":1656009,
"Program__c":"a0G2800000jXisqEAC",
"Status__c":"Active",
"Tier__c":"a0P2800000AKJxMEAX",
"Id":"a0A2800000PM4DlEAL"
},
"contact":null,
"account":{
"attributes":{
"type":"Account",
"url":"/services/datasomethingSZyxAAH"
},
"Name":"something",
"FirstName":"somethingd",
"LastName":"somethingir",
"PersonEmail":"somethingr@gmail.com",
"PersonHasOptedOutOfEmail":false,
"PersonMailingStreet":"something ",
"PersonBirthdate":"1992-07-19",
"Passport__c":"JHdd546TG",
"PersonMailingCountry":"Saudi Arabia",
"PersonMailingCity":"Jeddah",
"PersonMobilePhone":"+9667887575763",
"National_ID__c":"P435345",
"PersonDoNotCall":false,
"Id":"0012800001FSZyxAAH"
}
}
这是我的最终实现应该有的:
你好(人名),你的卡号(会员卡)你是类型(Member_Type__c)并且有积分(Points__c)
有人可以指点我一个教程或给我一些资源来了解如何实施下一步吗?
谢谢。
【问题讨论】:
-
使用
JSONSerialization()将data(而不是response)转换为JSON。然后 JSON 它只是字典和数组。 -
你是说我打印的时候吗?我编辑添加它。我只得到“41 个字节”
-
@user161993 您向我们询问完整代码,而不是您应该尝试一些方法 1. 使用 JSONSerialization 解析数据。 2.搜索如何从json中获取具体的key值。
-
不,我根本不想在复制粘贴中实现。我只想知道我的下一步应该是什么。谢谢。
-
是的,我将创建一个函数并在按钮上调用它。感谢您的意见!
标签: ios json swift xcode parsing