JSON由于错误而无法序列化:

时间:2019-02-13 16:00:57

标签: ios swift alamofire

我正在使用Alamofire 4.0,在进行网络通话时,我在应用程序审查期间遇到错误,因此我的应用程序被拒绝了。但是对于我和我的客户来说,一切正常,我们永远都不会犯错

  

JSON由于错误而无法序列化:   无法读取数据,因为数据格式不正确。

我们还检查了服务调用是否未打到服务器(因此没有得到他们的帮助),请找到代码段

manager.request(requestURL, method: .post, parameters: param as? Parameters, encoding: URLEncoding.methodDependent, headers: nil).responseJSON { (responseJson) in

})

通过放置各种类型的参数(例如特殊字符,nil等),我们无法从我们的角度重现错误。但是在应用审查期间,我们遇到此错误。请帮帮我!

参数: enter image description here

3 个答案:

答案 0 :(得分:0)

      var params = [String:Any]()

        params["stripeToken"] = self.stripeToken
        params["currency"] = "gbp"

  Alamofire.request(urlString, method: .post, parameters: params, encoding: JSONEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON { (response) in

 switch response.result {

            case .success:

     print("it's success")


            case .failure(let error):


                print("\n\n===========Error===========")
                print("Error Code: \(error._code)")
                print("Error Messsage: \(error.localizedDescription)")
                if let data = response.data, let str = String(data: data, encoding: String.Encoding.utf8){
                    print("Server Error: " + str)
                }
                debugPrint(error as Any)
                print("===========================\n\n")



            }// end of switch
       } //end of Alamofire

答案 1 :(得分:0)

如果您收到类似这样的响应,请首先尝试在日志中打印:

 Alamofire.request(url, method: .post, parameters: parameter).responseJSON { (response) in

        //For Network Error
        guard response.result.error == nil else {
            print(response.result.error!)
            return
        }

        if let value = response.result.value {
            let json = JSON(value)
            print("myJSON are: \(json)"
        }
    }

如果确实有任何错误,则告诉服务器团队进行检查。还要在 plist 中检查应用传输安全性。

答案 2 :(得分:0)

有类似的问题。原来,这是我的PHP脚本接收数据并发送回错误的序列化JSON数据。有一个“ echo”语句可能已损坏序列化的数据。检查服务器端代码,而不是检查错误,而是检查echo语句或其他应注释掉的输出。