2015-06-18 77 views
0

我一直在使用JSON挣扎几天。我试图创建一个POST请求到我的Web服务器的用户名,这将返回所述用户的信息。我已经设法从两种方式获得JSON响应,但我无法将数组的任何元素转换为字符串。我也使用SWIFTYJSON API。将JSON数组解析为字符串值时出现问题

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() 
} 
} 

但是,这似乎并没有工作,任何人都可以帮助我吗?

+0

我只知道objective-c,但作为一般规则,你最好使用AFNetworking或其他框架,而不是试图推出自己的。随着您的应用程序更多地链接到后端api,单独使用它变得越来越复杂。 – sunny

+1

你的问题不清楚。什么不起作用,SwiftyJSON对象或NSJSONSerialization?什么是返回的JSON模式? –

+1

你可以显示正在返回的json吗? –

回答

0

我看到使用NSJSONSerialization当你投射你的JSON响应作为一个NSArray,例如要得到第一个项目的player_username与SwiftyJSON你会怎么做:

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) 
    } 
}