Alamofire JSON响应Swift中的奇怪角色

时间:2015-10-28 12:19:41

标签: swift alamofire

我正在使用Alamofire 3.0和swift 2并得到以下请求的奇怪回复:

func requestURLwithHeadersAndParams(URLstr:String, connectionMethod: Alamofire.Method, header: [String : String], body:[String : AnyObject], completion: (reponse: String, statusCode: Int, error: String) -> Void)  {        
///Singleton Alamofire connection manager
let alamofireManager = Alamofire.Manager.sharedInstance
alamofireManager.request(connectionMethod, URLstr, parameters: body, encoding: ParameterEncoding.JSON, headers: header).responseJSON (){
        response in

        print("\nSuccess: \(response.result.isSuccess)")

        switch response.result {
        case .Success(let value):
            print("Response Status code: \((response.response?.statusCode)!)\n")
            print("\(value)")
            completion(reponse: "\(value)" , statusCode: (response.response?.statusCode)! , error: "")

        case .Failure(let error):
            print("Error Code:\(error.code) - Description:\(error.localizedDescription)")
            completion(reponse: "Error" , statusCode: (response.response?.statusCode)!, error: error.localizedDescription)

        } } }

value属性包含:

"{\n    \"auth_token\" = \"qcW-mQmyX8ototieJu7WK\";\n    avatar =     {\n        standard =         {\n            url = \"<null>\";\n        };\n        url = \"<null>\";\n    };\n    birthdate = \"<null>\";\n    \"created_at\" = \"2015-10-28T07:02:20.445Z\";\n    email = \"elrope@abt.com\";\n    \"first_name\" = El;\n    id = 12;\n    \"last_name\" = Perro;\n    role = user;\n    \"shooter_type\" = \"\";\n    \"updated_at\" = \"2015-10-28T07:42:37.860Z\";\n}"

任何想法如何摆脱所有转义字符('\'和'\ n'),因为在调用此方法的方法中使用SwiftyJSON的JSON序列化无法将字符串识别为json字符串并在以下情况下失败我做了let json = JSON(reponse)但有错误:

  

错误Domain = SwiftyJSONErrorDomain Code = 901“Dictionary [”auth_token“]   失败,它不是字典“UserInfo = 0x6030002d7c00   {NSLocalizedDescription = Dictionary [“auth_token”]失败,它不是   字典})

2 个答案:

答案 0 :(得分:0)

您的JSON无效。

实际上,您的value字符串只不过是NSDictionary的.description输出!

在游乐场演示:

enter image description here

毋庸置疑,这不是JSON ......所以当你试图将它交给SwiftyJSON时它会失败。

所以,要么你在某个地方感到困惑,而你正在使用你的字典的描述而不是它的实际内容......

...或者此错误来自服务器。

答案 1 :(得分:0)

我发现你的JSON本身无效。 例如avatarstandard不是字符串,引号在哪里?

我使用,:比使用;=

更好

我在SwiftyJSON上进行了测试,经过上述更改后,一切正常。所以问题可能在你的后端。尝试使用Web浏览器验证原始JSON。