这几天我一直在与 JSON 斗争。我正在尝试向我的网络服务器创建一个 POST 请求以获取用户名,该请求将返回有关该用户的信息。我已设法通过两种方式获取 JSON 响应,但无法将数组的任何元素转换为字符串。我也在使用 SWIFTYJSON API。
import UIKit
import Foundation
class ViewController: UIViewController {
var token = "barrymanilow"
var endPoint = "http://www.never.money/simple_app7.php"
@IBOutlet weak var firstLabel: UILabel!
override func viewDidLoad() {
submitAction(self)
}
func submitAction(sender: AnyObject) {
let myUrl = NSURL(string: "http://www.mindyour.money/simple_app7.php");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";
// Compose a query string
let postString = "token=\(token)";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
data, response, error in
if error != nil{
println("error=\(error)")
return
}
// Print out response body
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("responseString = \(responseString)")
//Let's convert response sent from a server side script to a NSDictionary object:
var err: NSError?
var myJSON = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error:&err) as? NSArray
var json : JSON = JSON(data: data)
let results: AnyObject? = myJSON?.valueForKey("player_username")
println("\(results)")
let result2 = json["player_username"].string
}
task.resume()
}
}
但是,这似乎不起作用,有人可以帮助我吗?
最佳答案
我发现,当使用 NSJSONSerialization
时,您会将 JSON 响应转换为 NSArray,因此,例如,要使用 SwiftyJSON 获取第一个项目的 player_username
,您可以执行以下操作:
let result2 = json[0]["player_username"].string
它应该无需首先将 json[0]
转换为字典即可工作,因为感谢 SwiftyJSON,编译器知道 json[0]
是一个字典。
如果由于某种原因 json[0]
无法自动订阅,您可以这样做:
let playerOneDic = json[0].dictionary
let result2 = playerOneDic["player_username"].string
<小时/>
否则,如果没有 SwiftyJSON,您将不得不执行以下操作:
if let playerOne = myJSON?[0] as? [String:AnyObject] {
if let username = playerOne["player_username"] as? String {
println(username)
}
}
关于ios - 将 JSON 数组解包为字符串值时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30925230/