2015-12-06 35 views
0

我在使用swift在IOS上解析從PHP腳本發送的JSON時遇到了問題。本週我剛剛開始學習IOS開發,也從未使用過JSON,因此在正確解析此問題時,任何幫助都將不勝感激。我將一個mysql查詢的結果作爲JSON發送到應用程序。這裏是我的swift代碼和錯誤日誌,你可以看到http服務收到的對象。如何使用iOS上的Swift解析JSON,從PHP服務腳本發送?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let secondViewController:VC2 = segue.destinationViewController as! VC2 

    let myUrl = NSURL(string: "myscriptaddress"); 

      let request = NSMutableURLRequest(URL:myUrl!); 

      request.HTTPMethod = "POST"; 

      let postString = "condition=" + String(currentval); 

      request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); 

      secondViewController.mystring = "getting ready" 

      let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
       data, response, error in 
       guard data != nil else { 
        print("no data found: \(error)") 
        return 
       } 

       do { 
        if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { 

         print("Success") 

        } else { 
         let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) 
         print("Error could not parse JSON: \(jsonStr)") 

        } 
       } catch let parseError { 
        print(parseError) 
        let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) 
        print("Error can't parse JSON: '\(jsonStr)'") 

       } 
      } 

      task.resume() 
} 

而現在的錯誤日誌:

Error could not parse JSON: Optional([{"unidad":"sanfrancisco","capacidad":"15","uso":"5","telefono":"num"},{"unidad":"pediatricouniversitario","capacidad":"15","uso":"5","telefono":"num"},{"unidad":"sanjorge","capacidad":"15","uso":"7","telefono":"num"},{"unidad":"himacaguas","capacidad":"20","uso":"4","telefono":"num"},{"unidad":"himabayamon","capacidad":"20","uso":"8","telefono":"num"},{"unidad":"sanlucas","capacidad":"10","uso":"8","telefono":"num"},{"unidad":"auxiliomutuo","capacidad":"15","uso":"11","telefono":"num"}]) 

回答

1

其未能解開的JSON數據作爲字典類型。提供的JSON字符串是一個對象數組。

試試這個在您的通話JSONObjectWithData:

let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String : AnyObject]] 
+0

的伎倆,謝謝 – randomAsker