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

问题描述 投票:1回答:2

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

responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain = NSCocoaErrorDomain Code = 3840“Garbage at end。”UserInfo = {NSDebugDescription = Garbage at end。}))

有问题的JSON是:

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

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

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

Alamofire不会抱怨并正确解析它。那个怎么样?我认为指定参数responseJSON它会相反的方式。

Alamofire.request("http://192.168.1.4:8080/user/abcdf").validate().responseJSON { response in
            switch response.result {
            case .success:
                // DO stuff

            case .failure(let error):
                print(error)
            }
        }
ios json swift alamofire
2个回答
1
投票

这意味着您的API响应字符串不是正确的JSON。确保您的响应是有效的JSON。在我的情况下(下面),JSON String有一些HTML字符打破了JSON。

enter image description here

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

注意:如果您使用Postman,您可能不会注意到JSON响应中的额外不需要的字符。您需要将响应类型从“漂亮”更改为“原始”以观察此情况。


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 
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.