2016-05-13 48 views
1

我正在解析數據,我也得到了responseString。但我的問題是我想將它轉換爲字典,然後我想從該jsonObject獲取值。 但我無法得到。解析Swift 2中的JSON數據

我的代碼如下

func loginRequest(url:String, withParams params: [String: String?], postCompleted : (succeeded: Bool, msg: String) ->()){ 

     let request = NSMutableURLRequest(URL: NSURL(string: url)!) 

     let session = NSURLSession.sharedSession() 

     request.HTTPMethod = "POST" 



     var err: NSError? 

     var bodyData = "" 

     for (key,value) in params{ 

      if (value == nil){ continue } 

      let scapedKey = key.stringByAddingPercentEncodingWithAllowedCharacters(

       .URLHostAllowedCharacterSet())! 

      let scapedValue = value!.stringByAddingPercentEncodingWithAllowedCharacters(

       .URLHostAllowedCharacterSet())! 

      bodyData += "\(scapedKey)=\(scapedValue)&" 

     } 



     request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 



     let task = session.dataTaskWithRequest(request, 

      completionHandler: {data, response, error -> Void in 

       let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding) 

       postCompleted(succeeded: true, msg: dataString! as String) 

       print(dataString!) 



       if let datas = dataString!.dataUsingEncoding(NSUTF8StringEncoding) { 



        do{ 

         let json = try NSJSONSerialization.JSONObjectWithData(datas, options: []) as? [String:AnyObject] 

         //return json 

         print(json) 

        } 

        catch 

        { 

         print("Something went wrong") 

        } 



       } 





          }) 



     task.resume() 

    } 

我打電話這樣

self.loginRequest("http://stream.gsr-india.com:8080/pgn_service/REST/WebService/GetUserDetails", 

       withParams: ["first_name":firstNameTextField.text,"last_name":lastNameTextField.text , "application_id":uniqueIdTextField.text]) 

       { 

        (succeeded: Bool, msg: String) ->() in 

        if(succeeded) { 

         if msg == "0" 

         { 

          //Incorrect data... 

         } 

         else 

         { 

          //The login it's ok... 



         } 

        } 

      } 

該方法任何人都可以請幫我解決這個問題。 提前致謝。

回答

1

更改方法聲明

func loginRequest(url:String, withParams params: [String: String?], postCompleted : (succeeded: Bool, msg: NSDictionary?) ->()){ 

則任務處理程序回調改爲

let task = session.dataTaskWithRequest(request, 

    completionHandler: {data, response, error -> Void in 

     let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print(dataString!) 
      do{ 
       let json = try NSJSONSerialization.JSONObjectWithData(datas, options: []) as? [String:AnyObject] 
       postCompleted(succeeded: true, msg: json) 
       print(json) 
      } 
      catch { 
       print("Something went wrong") 
      } 
     } 
    }) 

變化

 (succeeded: Bool, msgDict: NSDictionary?) ->() in 
        if let dict = msgDict { 
         // call any value like dict["error"] etc 
        } 
+0

還是它是未來 '零' –

+0

出現打印( json)它的輸出是什麼? – Shubhank

+0

打印(json)即將到期零 –