我正在使用alamofire進行GET請求,並嘗試使用SwiftyJSON轉換爲JSON。我可以成功地發出請求,但我無法將響應轉換爲可用的JSON對象。如何使用SwiftyJSON獲取正確的JSON響應?
我試圖從foursquare場地詳細信息響應中獲取數據,並使用有關場地的相應信息更新UITableView(詳細信息頁面)。 UITableView有3個不同的部分。
這是我的VenueDetailViewController(UITableViewController)的makeRequest代碼。
func makeRequest() {
Alamofire.request(.GET, self.foursquareEndpointURL, parameters: [
"client_id" : self.foursquareClientID,
"client_secret" : self.foursquareClientSecret,
"v" : "20140806"
])
.responseJSON { (request, response, data, error) in
println(request)
println(response)
println(error)
println(data)
if data != nil {
var jsonObj = JSON(data!)
// response is not in the form of an array? I think... thats why data is not setting .. I think "arrayValue" below is incorrect. should be something like dictionaryValue or stringValue
if let obj = jsonObj["response"]["venue"].arrayValue as [JSON]? {
self.responseitems = obj
self.tableView.reloadData()
println("Objis: \(obj)")
}
}
}
}
當我println("Obis: \(obj)")
我得到的Objis: []
控制檯輸出告訴我,我是從JSON響應抓住了錯誤的數據?下面是Foursquare Venue Detail API request
哦URL和self.responseitems
是var responseitems:[JSON] = []
請幫幫忙!由於
你聲明的obj爲JSON數組,嘗試訪問數組中的JSON類型之一。例如:'println(「Objis:\(obj.first)」)'這將返回一個可選值,如果有可用項目,它將返回數組中的第一個項目,如果沒有可用的項目它將返回無 – milo526
@ milo526你看過我提供的foursquare API響應鏈接嗎?鑑於該響應及其結構,對於我將obj聲明爲Array是否正確?或者我應該將obj聲明爲不同的SwiftyJSON類型?請記住self.responseitems –
foursquare場地詳細信息API請求不適用於非四方會員。我沒有這樣的帳戶,所以無法看到它,也許你可以上傳API文檔中關於你的問題有趣的部分的屏幕截圖。 – milo526