使用swift 3中的方法POST,JSONSerialization.jsonObject的响应为零
这是我想做的事情的一个例子,但是如果让json=try JSONSerialization.jsonObject(with:data)as?[String:String]为使用swift 3中的方法POST,JSONSerialization.jsonObject的响应为零,json,swift3,null,response,ios10,Json,Swift3,Null,Response,Ios10,这是我想做的事情的一个例子,但是如果让json=try JSONSerialization.jsonObject(with:data)as?[String:String]为false,因为JSONSerialization.jsonObject的返回值为nil func parser(lbl: UILabel){ let postString = "xxx=xxx&xxxx=xxxx==&xxxxx=xxxxx&xxxxxx=xxxxxx&xx=xx"
false
,因为JSONSerialization.jsonObject
的返回值为nil
func parser(lbl: UILabel){
let postString = "xxx=xxx&xxxx=xxxx==&xxxxx=xxxxx&xxxxxx=xxxxxx&xx=xx"
let url = URL(string: "http://xxxxxxxxxx.com/xxxxxx/xxxxx/xxxxxx.php")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
lbl.text = "error";
return
}
do {
if let json = try JSONSerialization.jsonObject(with: data) as? [String: String] {
DispatchQueue.main.async {
let error = Int(json["success"]!)
let message = json["message"]
lbl.text = message
}
}
} catch let parseError {
print("error to parse: \(parseError)")
let responseString = String(data: data, encoding: .utf8)
print("response`enter code here` : \(responseString!)")
}
}
task.resume()
}
试试这个:
var resultFromServer: Any?
resultFromServer = try JSONSerialization.jsonObject(with: data!, options: [])
这将使您从服务器获得类型为Any?
的结果,只需根据您得到的响应、数组或字典进行检查和类型转换即可
喜欢
if let respdict = resultFromServer as? [String : Any] {
//respone in dictionary format
}
else if let respArr = resultFromServer as? [Any]{
//response is array type
}
else if let stringRespt = String(data: data, encoding: .utf8){
//resp is string
}
只需根据您的JSON进行更改试试这个:
var resultFromServer: Any?
resultFromServer = try JSONSerialization.jsonObject(with: data!, options: [])
这将使您从服务器获得类型为Any?
的结果,只需根据您得到的响应、数组或字典进行检查和类型转换即可
喜欢
if let respdict = resultFromServer as? [String : Any] {
//respone in dictionary format
}
else if let respArr = resultFromServer as? [Any]{
//response is array type
}
else if let stringRespt = String(data: data, encoding: .utf8){
//resp is string
}
只需根据您的JSON进行更改,而不查看您的
JSON
响应,没有人能告诉您解析方法有什么问题。没有人能看到您的JSON
响应,没有人能告诉您解析方法有什么问题。不要使用.mutableContainers
,因为它在Swift
中无效。整个JSON
对象的可变性取决于您是使用let
还是var
关键字声明它。谢谢!你的代码帮了我很多,但现在我又犯了一个错误!方法POST正在向web服务发送类似“”的参数。我是说空。你能给我一个替换.mutableContainers的建议吗?好的,所以没有响应,对吗?您得到的是空字符串?我已将其添加到答案“生成逻辑”中,以检查响应是字符串、数组还是字典..不要使用.mutableContainers
,因为它在Swift
中无效。整个JSON
对象的可变性取决于您是使用let
还是var
关键字声明它。谢谢!你的代码帮了我很多,但现在我又犯了一个错误!方法POST正在向web服务发送类似“”的参数。我是说空。你能给我一个替换.mutableContainers的建议吗?好的,所以没有响应,对吗?您得到的是空字符串?我已将其添加到“生成逻辑”的答案中,以检查响应是字符串、数组还是字典。。