我正在尝试在 Swift 中使用 Alamofire 从 GET
请求中获取数据。存在一个问题,即它没有从请求中获得完整的响应。响应是一个包含嵌套数组的数组,其中一些 String
和一些 [String:Any]
。我没有使用 Alamofire 引入任何 [String:Any]
,并认为这是一个严重的错误。 Postman 显示嵌套数组值,但不显示 Alamofire。
请求
Alamofire.request(request.getFullUrl(param: paramsForUrl), method: request.getMethodType(), parameters: data, encoding: request.getEncoding(), headers: headers).validate(statusCode: 200..<500).responseJSON { response in }
典型的响应应该是什么样子
{
"uuid": "787FDS8-FS7FS7DG9-FSD789FCS98",
"name": "Show time",
"views_count": 0,
"comments_count": 0,
...
"events": [
{
"uuid": "f69a358e-9a1e-427c-a158-95dfc8c54ed7",
"name": "Test",
...
},
{
"uuid": "8993b639-f6c9-4d20-b8a9-c43c73a9828b",
"name": "Test 2",
...
},
...
]
"times: [
{
"name: "test time 1",
"clock: "Face"
},
{
"name": "test time 2",
"clock: "Back"
}
]
}
缺少什么
嵌套数组内的任何内容:事件、时间
。如果我有一个简单的 String
数组,那么 Alamofire 就会得到这些。它不显示任何嵌套的内容,这是通过打印 response.result.value
和 JSON 解码响应并直接访问 events
实现的。它看不到事件
或时间
。
感谢您的帮助。
最佳答案
可能是您的 JSON 无效。要检查是否尝试将 responseJSON
更改为 responseString
并查看它是否打印所有数据,例如
Alamofire.request(url ,method: .get ,parameters: data).validate().responseString{ response in
switch response.result{
case .success:
let s = response.result.value ?? "nil"
print("API Response: \(s)")
case .failure:
debugPrint(response)
}
}
如果上面打印了服务器上的所有数据,那么您需要修复服务
关于swift - Alamofire 未得到完整回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57372373/