解析json时出现A​​lamofire垃圾在结束时出错

r4i*_*id4 2 json ios swift alamofire

我正在连接到本地主机上的服务器以获取一些数据。返回到此请求的数据是 JSON,在Postman上正确显示了 JSON,但是当我使用 iOS 时,Alamofire 返回一个错误:

responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840“垃圾在最后。” UserInfo={NSDebugDescription=垃圾在最后。}))


有问题的 JSON 是:

{
  "name": "TestName",
  "surname": "TestSurname"
}
Run Code Online (Sandbox Code Playgroud)

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

"{"name": "TestName after update","surname": "TestSurname"}"
Run Code Online (Sandbox Code Playgroud)

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)
            }
        }
Run Code Online (Sandbox Code Playgroud)

Abh*_*man 5

这意味着您的 API 响应字符串不是正确的 JSON。确保您的响应是有效的 JSON。就我而言(如下),JSON 字符串有一些破坏了 JSON 的 HTML 字符。

在此处输入图片说明

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

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