2015-06-18 78 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) 
    } 
}