我已经看到了许多问题和答案。我试过了,我无法理解。我已经访问了我的所有者服务器的responseJSON没问题。但现在我正在尝试使用第三方API并遇到麻烦。我正在使用Alamofire和SwiftyJSON。
让json = JSON(数据:数据)
这就是json的样子:
{"maxResults":50,"startAt":0,"isLast":true,"values":[{"id":1,"self":"https://stackrank.atlassian.net/rest/agile/1.0/board/1","name":"JI board","type":"scrum"},{"id":2,"self":"https://stackrank.atlassian.net/rest/agile/1.0/board/2","name":"Board2","type":"scrum"}]}
为什么我无法访问任何值?
json [“maxResults”]。numberValue给我'0'
json [“values”]。arrayValue给我一个空数组[]
我已经看到了很多关于编码等的答案......但我无法让它发挥作用。
以下是Alamofire的片段,显示了响应格式:
Alamofire.request(request).responseJSON {
response in
switch response.result {
case .success:
success(response.data!)
答案 0 :(得分:0)
您获得的对象不能是SwiftJSON对象。这里的游乐场代码完美无缺(要求SwiftyJSON.swift位于Sources文件夹中):
let jsontext = "{\"maxResults\":50,\"startAt\":0,\"isLast\":true,\"values\":[{\"id\":1,\"self\":\"https://stackrank.atlassian.net/rest/agile/1.0/board/1\",\"name\":\"JI board\",\"type\":\"scrum\"},{\"id\":2,\"self\":\"https://stackrank.atlassian.net/rest/agile/1.0/board/2\",\"name\":\"Board2\",\"type\":\"scrum\"}]}"
let data = jsontext.data(using: .utf8)!
let json = JSON(data)
print(json["maxResults"].intValue)
print(json["values"].arrayValue)
这很有效。
就原始数据而言,这是another SO question proposed:
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success(let data):
let json = JSON(data)
let maxResults = json["maxResults"].intValue
let values = json["values"].arrayValue
print(maxResults)
case .Failure(let error):
print("Request failed with error: \(error)")
}
}