我是swift的新手,我想开发一个简单的应用程序来从网址获取数据。现在我可以从服务器获取JSON响应,但我需要分别从电子邮件地址,电话号码等所有数据中获取。那我怎么能得到它?
这是我试图从
获取的代码 var apple = "xyz123@gmail.com"
let myUrl = NSURL(string: "http://abcd.com/demo/xyzdemo/api/login?email_mobile=\(apple)")
let response = NSMutableURLRequest(URL: myUrl!)
response.HTTPMethod = "GET"
let task = NSURLSession.sharedSession().dataTaskWithRequest(response) {
data, response, error in
if error != nil
{
println("error=\(error)")
return
}
//println("response = \(response)")
// Print out response body
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString!)")
var err: NSError?
var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSDictionary
if let parseJSON = myJSON {
var loginDetails = parseJSON["UserLogin"] as? String
println("Login Details: \(loginDetails)")
}
}
task.resume()
}
我输出的字符串响应是
responseString如下=
{"UserLogin":[{"result":"Success",
"userid":111,"name":"test",
"email":"xyz@gmail.com",
"mobile":"12345893576",
"location":"mnop","img_url":
"http:\/\/abcd.com\/demo\/xyzdemo\/public\/images\/no_user.png",
"date_of_birth":"06-07-2015",
"date_of_anniversary":"22-08-2015"}],
"RelationDetails":[{"id":87,"user_id":111,"name":"abc@gmail.com","dob":"2015-08-04"},{"id":88,"user_id":111,"name":" qwe","dob":"2015-08-04"},{"id":89,"user_id":111,"name":" fags","dob":"2015-08-04"}]
}
firstNameValue:nil
答案 0 :(得分:0)
而不是
var loginDetails = parseJSON["UserLogin"] as? String
println("Login Details: \(loginDetails)")
尝试做:
if let loginDetails = parseJSON["UserLogin"] as? [String:String]
{
let email = loginDetails["email"]
println("email is \(email)")
}
我在这里所做的不是强迫“UserLogin
”成为String对象(它不是),我将其设置为具有String键和String对象值的字典。
然后我们可以从中获取电子邮件字符串值并将其打印出来。
您可以对“UserLogin
”字典中的其余值执行相同的操作。
答案 1 :(得分:0)
您可以使用SwiftyJSON-framework。它是一个很棒的JSON框架,它使您在使用JSON时更轻松。
//Create JSONData:
var myJSON= JSONValue(data)
然后,要访问例如电子邮件,您可以访问以下数据:
let eMail = myJSON[0]["UserLogin"]["email"].string!
如您所见,您获取第一个数组元素(在您的情况下只有一个)并在UserLogin
叶子中搜索元素email
。然后从中获取字符串值。
答案 2 :(得分:0)
经过Michael Dautermann和Christian的大量搜索和建议,我发现这段代码很有用。只有在我们的项目中使用SwiftyJSON.swift文件后才能使用此代码,该文件可在https://github.com/SwiftyJSON/SwiftyJSON中找到
var apple = "xyz123@gmail.com"
let myUrl = NSURL(string: "http://abcd.com/demo/xyzdemo/api/login?email_mobile=\(apple)")
let response = NSMutableURLRequest(URL: myUrl!)
response.HTTPMethod = "GET"
let task = NSURLSession.sharedSession().dataTaskWithRequest(response) {
data, response, error in
if error != nil
{
println("error=\(error)")
return
}
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString!)")
var request = NSURLRequest(URL: myUrl!)
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
if data != nil {
var hoge = JSON(data: data!)
println(hoge["UserLogin"][0]["email"])
}
}
task.resume()
}