我正在尝试在Swift中使用Alamofire从GET
请求中获取数据。有一个问题是无法从请求中获得完整的响应。响应是一个数组,其中包含一些String
和一些[String:Any]
的嵌套数组。我没有[String:Any]
被Alamofire吸引住,并认为这是一个严重的错误。邮递员显示嵌套的数组值,但不显示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"
}
]
}
缺少的内容
嵌套数组中的所有内容:events, times
。如果我有一个简单的String
数组,那么Alamofire会得到这些。它没有显示任何嵌套的内容,这是通过打印response.result.value
和JSON解码响应并直接访问events
来实现的。它看不到events
或times
。
感谢您的帮助。
答案 0 :(得分:0)
可能是您的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)
}
}
如果以上内容正在打印服务器中的所有数据,而您需要修复该服务
答案 1 :(得分:0)
删除 .validate(状态代码:200 .. <500),然后重试。
Alamofire.request(url ,method: .get ,parameters: parameter).responseJSON{ response in
switch response.result{
case .success:
let value = response.result.value ?? "nil"
print("API Response: \(value)")
case .failure:
print("error")
}
}