在 swift4 中将 JSONresponse 转换为 NSDATA 或 NSDICTIONARY
convert JSONresponse to NSDATA or NSDICTIONARY in swift4
我在 swift 中从 public 测试 api 中得到响应作为 JSONarray:
func getFlightData(airportCode: String, minutesBehind: String, minutesAhead:String){
let securityToken: String = "Basic YWFnZTQxNDAxMjgwODYyNDk3NWFiYWNhZjlhNjZjMDRlMWY6ODYyYTk0NTFhYjliNGY1M2EwZWJiOWI2ZWQ1ZjYwOGM="
var headers: HTTPHeaders = [:]
headers["Authorization"] = securityToken
let parameters: Parameters = ["city": airportCode, "minutesBehind" : minutesBehind, "miutesAhead" :minutesAhead]
Alamofire.request("https://api.qa.alaskaair.com/1/airports/"+airportCode+"/flights/flightInfo", parameters: parameters, headers: headers).responseJSON { (response) in
print(response)
}
我在swift4中使用almofire实现了这个操作
我应该将这个 JSONArray 转换为 NSData 还是 NSDictionary?如何?
我必须使用 JSONSerealization 吗?
您可以使用以下方法来实现。
您已经在使用 Alamofire 作为您的网络请求器,因此没有必要将响应对象转换为 JSON 对象或数据对象。库本身将提供给已解析的 JSON 对象。所以检查下面的示例代码来检查 JSON 对象。
let urlString = "https://......"
let securityToken: String = "Basic YWFnZTQxNDAxMjgwODYyNDk3NWFiYWNhZjlhNjZjMDRlMWY6ODYyYTk0NTFhYjliNGY1M2EwZWJiOWI2ZWQ1ZjYwOGM="
var headers: HTTPHeaders = [:]
headers["Authorization"] = securityToken
let parameters: Parameters = ["city": 100, "minutesBehind" : 60, "miutesAhead" :0]
Alamofire.request(urlString, method: .get, parameters: parameters, encoding: JSONEncoding.default, headers: headers).validate().responseJSON { (response) in
if let jsonObject = response.result.value{
print("response.result.value \(String(describing: jsonObject))")
}
if let jsonObject = response.value{
print("response.value \(String(describing: jsonObject))")
}
}
let urlPath: String = BASE_URL + uri
let url = URL(string: urlPath)!
let request = NSMutableURLRequest(url: url)
request.addValue("no-cache", forHTTPHeaderField: "Cache-Control")
Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: [:])
.responseJSON { response in
print("S-E-R-V-E-R C-A-L-L C-O-M-P-L-E-T-E-D")
switch response.result {
case .success:
if let json = response.result.value {
var data = [String: AnyObject]();
if let dict = json as? [String: AnyObject]{
// Dictionary found
data = dict;
}
else if let list = json as? [AnyObject] {
// Array found
data = ["data":list as AnyObject];
}
}
case .failure(let error):
print("status code: \(error.localizedDescription)")
failure(error as NSError);
}
}
我在 swift 中从 public 测试 api 中得到响应作为 JSONarray:
func getFlightData(airportCode: String, minutesBehind: String, minutesAhead:String){
let securityToken: String = "Basic YWFnZTQxNDAxMjgwODYyNDk3NWFiYWNhZjlhNjZjMDRlMWY6ODYyYTk0NTFhYjliNGY1M2EwZWJiOWI2ZWQ1ZjYwOGM="
var headers: HTTPHeaders = [:]
headers["Authorization"] = securityToken
let parameters: Parameters = ["city": airportCode, "minutesBehind" : minutesBehind, "miutesAhead" :minutesAhead]
Alamofire.request("https://api.qa.alaskaair.com/1/airports/"+airportCode+"/flights/flightInfo", parameters: parameters, headers: headers).responseJSON { (response) in
print(response)
}
我在swift4中使用almofire实现了这个操作
我应该将这个 JSONArray 转换为 NSData 还是 NSDictionary?如何? 我必须使用 JSONSerealization 吗?
您可以使用以下方法来实现。
您已经在使用 Alamofire 作为您的网络请求器,因此没有必要将响应对象转换为 JSON 对象或数据对象。库本身将提供给已解析的 JSON 对象。所以检查下面的示例代码来检查 JSON 对象。
let urlString = "https://......"
let securityToken: String = "Basic YWFnZTQxNDAxMjgwODYyNDk3NWFiYWNhZjlhNjZjMDRlMWY6ODYyYTk0NTFhYjliNGY1M2EwZWJiOWI2ZWQ1ZjYwOGM="
var headers: HTTPHeaders = [:]
headers["Authorization"] = securityToken
let parameters: Parameters = ["city": 100, "minutesBehind" : 60, "miutesAhead" :0]
Alamofire.request(urlString, method: .get, parameters: parameters, encoding: JSONEncoding.default, headers: headers).validate().responseJSON { (response) in
if let jsonObject = response.result.value{
print("response.result.value \(String(describing: jsonObject))")
}
if let jsonObject = response.value{
print("response.value \(String(describing: jsonObject))")
}
}
let urlPath: String = BASE_URL + uri
let url = URL(string: urlPath)!
let request = NSMutableURLRequest(url: url)
request.addValue("no-cache", forHTTPHeaderField: "Cache-Control")
Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: [:])
.responseJSON { response in
print("S-E-R-V-E-R C-A-L-L C-O-M-P-L-E-T-E-D")
switch response.result {
case .success:
if let json = response.result.value {
var data = [String: AnyObject]();
if let dict = json as? [String: AnyObject]{
// Dictionary found
data = dict;
}
else if let list = json as? [AnyObject] {
// Array found
data = ["data":list as AnyObject];
}
}
case .failure(let error):
print("status code: \(error.localizedDescription)")
failure(error as NSError);
}
}