Ios Alamofire JSON序列化错误-Swift 2.0

Ios Alamofire JSON序列化错误-Swift 2.0,ios,json,swift,alamofire,Ios,Json,Swift,Alamofire,我在通过Alamofire发布JSON时遇到问题。我得到下面的错误。我的参数如前所述-知道我做错了什么吗 let parameters: [String: AnyObject] = [ "t": [ "name": "foo", "event": "tap", "ts": NSDate().timeIntervalSince1970 ], "z": [["key":

我在通过Alamofire发布JSON时遇到问题。我得到下面的错误。我的参数如前所述-知道我做错了什么吗

    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)

Error Domain=com.alamofire.Error Code=-6006“无法序列化JSON。输入数据为零或零长度。UserInfo={NSLocalizedFailureReason=JSON无法序列化。输入数据为零或零长度。}

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())

使用此逻辑,首先需要将
NSDate
参数转换为
字符串
,然后将
字符串
版本添加到参数字典中,Alamofire将从那里处理它。

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())

使用此逻辑,您首先需要将
NSDate
参数转换为
字符串
,然后将
字符串
版本添加到参数字典中,Alamofire将从那里处理它。

您的字典可以使用
NSJSONSerialization
对象在
NSData
中轻松转换。您确定在序列化响应JSON时没有收到此错误吗?您的字典可以使用
NSJSONSerialization
对象在
NSData
中轻松转换。您确定在序列化响应JSON时没有收到此错误吗?