2016-03-12 81 views
3

好吧,所以我使用alamofire和我傳遞的參數是有效的。以下是目前爲止的代碼:如何在swift中打印Alamofire中的post請求的響應的json內容?

Alamofire.request(.POST, "http://mywebservice.com", parameters: myparameters) 
.response { (request, response, data, error) in 
    if(error != nil){ 
     print("error= \(error)") 
    }else{ 
     print("there was no error so far ") 
     print(data) 
     var json = JSON(data!) 

     print(json) //prints unknown 
     print(json["id"]) //prints null  
     } 
    } 
} 

我嘗試過不同的事情,但到目前爲止沒有任何工作。我使用alamofire和swiftyjson,即來自web服務的響應JSON是:

{ 
    "id": "432532gdsg", 
    "username": "gsdgsdg" 
} 

,我想在成功的情況下單獨打印兩個值。我該怎麼做?

+0

讓我們試試這個:HTTP:/ /stackoverflow.com/a/33720060/2227743(這是關於JSON的初始化(),如果我猜對了,可能會幫助你) – Moritz

+0

是的,就是這樣,謝謝!我可以刪除這個問題,或者 - 當您將它作爲答案發布時 - 我會接受它,並且問題會自行關閉,您的呼叫,謝謝:) – randomuser1

+0

不客氣!這兩個問題是不同的,所以我也爲這個問題做了一個具體的答案。謝謝。 – Moritz

回答

1

您的問題來源於此行:

var json = JSON(data!) 

從SwiftyJSON的JSON()初始化可以採取幾種類型的輸入。

當您在init中未指定類型時,SwiftyJSON會嘗試推斷其類型本身。

不幸的是,它有時會失敗默默,因爲它會誤解輸入。

因此,使用SwiftyJSON與NSData的時候,解決方法是指定的 「數據:」 參數爲JSON初始化:

var json = JSON(data: data!) 
1

試試這個

Alamofire.request(.POST, "http://mywebservice.com", parameters : myparameters , encoding : .JSON) 
    .responseData{ response in 
      let json = JSON(data:response.result.value!) 
      print(json) 
      let id=json["id"] 
      let username=json["username"] 
      print(id) 
      print(username) 


} 
相關問題