2016-05-18 18 views
1

Alamofire経由でJSONを送信する際に問題が発生しています。私は以下のエラーが発生しています。私のパラメータは注目されています - 私が間違っていることは何ですか?Alamofire JSONシリアライゼーションエラー - Swift 2.0

let parameters: [String: AnyObject] = [ 
     "t": [ 
      "name": "foo", 
      "event": "tap", 
      "ts": NSDate().timeIntervalSince1970 
     ], 
     "z": [["key": "12345"], ["key": "67890"]] 
    ] 

Alamofire.request(.POST, "https://myapi.com/test", parameters: parameters, encoding: .JSON) 

エラードメイン= com.alamofire.errorコード= -6006 "JSONをシリアライズすることができませんでした。入力データがnilまたはゼロの長さでした。" UserInfo = {NSLocalizedFailureReason = JSONをシリアル化できませんでした。入力データがゼロまたは長さゼロ}}

+0

あなたの辞書は 'NSJSONSerialization'オブジェクトを使って' NSData'で簡単に変換できます。レスポンスJSONをシリアル化する際にこのエラーを受け取っていませんか? –

答えて

0

NSDateは有効なJSONオブジェクトではありません。 NSDateFormatterを使用して、多くのRFCまたはISO仕様のいずれかを使用して、文字列に変換する必要があります。 ISO8601の日付の例を示します。このロジックを使用して

let dateFormatter = NSDateFormatter() 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" 

let iso8601String = dateFormatter.stringFromDate(NSDate()) 

には、まず、あなたのパラメータ辞書にStringバージョンを追加し、Alamofireがあるからそれを処理する、StringにあなたNSDateパラメータを変換する必要があります。