在解析json时,Alamofire垃圾在结束时出错

时间:2017-05-31 21:55:46

标签: ios json swift alamofire

我在localhost上连接到我的服务器以获取一些数据。返回此请求的数据是JSON,在 Postman 上正确显示JSON,但是当我在玩iOS时,Alamofire会给我一个错误:

  

responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误   Domain = NSCocoaErrorDomain Code = 3840" Garbage at end。"   UserInfo = {NSDebugDescription =结尾处的垃圾。}))


有问题的JSON是:

UIViewController

我不明白的是,如果我强制我的服务器以字符串的形式返回json,那么像

if let customerTokenData = UserDefaults.standard.data(forKey: "myToken") {
    let customerToken = NSKeyedUnarchiver.unarchiveObject(with: customerTokenData) as! BUYCustomerToken
    print(customerToken)
} else {
    print("No token stored. Launch again to see token.")
    let customerToken = BUYCustomerToken(customerID: 999, accessToken: "some token", expiry: Date())
    let tokenData = NSKeyedArchiver.archivedData(withRootObject: customerToken)
    UserDefaults.standard.set(tokenData, forKey: "myToken")
}

Alamofire不会抱怨并正确解析它。那个怎么样?我认为指定参数{ "name": "TestName", "surname": "TestSurname" } 它会反过来。

"{"name": "TestName after update","surname": "TestSurname"}"

2 个答案:

答案 0 :(得分:1)

这意味着您的API响应字符串不是正确的JSON。 确保您的响应是有效的JSON。在我的情况下(如下所示),JSON String包含一些破坏JSON的HTML字符。

enter image description here

如果您使用的是Alamofire,请将.responseJSON更改为.responseString并确认响应结构为有效JSON。

注意:如果您使用的是Postman,您可能不会注意到JSON响应中多余的多余字符。您需要将响应类型从“漂亮”更改为“原始”才能观察到这一点。

答案 1 :(得分:0)

我认为你需要获取数据,所以你应该像这样编写我不确定

Alamofire.request("http://192.168.1.4:8080/user/abcdf",method:.get).responseJSON {
        response in
        if response.result.isSuccess {
          //do stuff   

        }
        else {

           // do other stuff 
        }
    }