如何在 Swift 中获取 JSON 数据并将其添加到 URL

Posted

技术标签:

【中文标题】如何在 Swift 中获取 JSON 数据并将其添加到 URL【英文标题】:How get JSON Data in Swift and add it to URL 【发布时间】:2017-07-12 04:05:21 【问题描述】:

如何获取 JSON 数据并将其添加到 URL?

我的情况是我将访问 JSON URL,但我需要来自其他 JSON URL 的 value Token。

这是我的 Json,我需要一个令牌才能访问它。 https://api-sandbox.tiket.com/flight_api/all_airport/token=......

要获取token,我必须从其他json访问,这个查看其他json获取token。

"诊断":"状态":200,"elapsetime":"0.2082","memoryusage":"16.99MB","unix_timestamp":1499832598,"confirm":"success","lang":"id", "货币":"印尼盾", “输出类型”:“json”, “登录状态”:“假”, “令牌”:“b650fce732668b58b0a4c404b65932e972ad123d

我必须获取值令牌,并将其添加到第一个 JSON URL 以访问第一个 JSON

这是我的编码:

func getLatestKotaTujuan()

    var tujuanUrl = URLComponents(string: "https://api-sandbox.tiket.com/flight_api/all_airport?")!
    tujuanUrl.queryItems = [
        URLQueryItem(name: "token", value: "4d4bba355bb920fbdc1aa3848769a59ba74ea03c" ),
        URLQueryItem(name: "output", value: "json")
    ]

    let request = tujuanUrl.url
    let task = URLSession.shared.dataTask(with: request!, completionHandler:  (data, response, error) -> Void in

        if let error = error 
            print(error)
            return
        

        // Parse JSON data
        if let data = data 
            self.kotaTujuan = self.parseJsonData(data: data)

            // Reload table view
            OperationQueue.main.addOperation(
                self.tableView.reloadData()
            )
        
    )

    task.resume()

【问题讨论】:

【参考方案1】:

你可以使用 Alamofire 和 SwiftyJSON

    安装两个cocopod

       pod 'Alamofire'
       pod 'SwiftyJSON'
    

    我的 Json 是这样的

    "loginNodes":["errorMessage":"Welcome To Alamofire","name":Enamul Haque,"errorCode":"0","photo":null]
    

    声明多维数组

     var arrRes = [[String:AnyObject]]()
    

    Alamofire 从服务器获取 json

     func getList() 
    
    
       Alamofire.request("url.....", method: .post, parameters: [
        "userNameid":"25"
    
        ]).responseJSON(responseData) -> Void in
            if((responseData.result.value != nil))
    
                // let jsonData = JSON(responseData.result.value)
                HUD.hide();
    
                if((responseData.result.value != nil))
                    let swiftyJsonVar = JSON(responseData.result.value!)
    
                    if let resData = swiftyJsonVar["loginNodes"].arrayObject 
                        self.arrRes = resData as! [[String:AnyObject]]
                    
    
                    if self.arrRes.count > 0 
                        self.tableView.reloadData()
                    
    
                
            
         
    
      
    

    使用like将数据设置为表格视图

       override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    
        return arrRes.count
    
    
    
    
      override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
         let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! Agent_Account_Balance_Cell
    
            cell.namelabel.text = arrRes[indexPath.row]["name"] as? String
    
           return cell
         
    

【讨论】:

以上是关于如何在 Swift 中获取 JSON 数据并将其添加到 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 4 中使用 JSONDecoder 从嵌套 JSON 中获取数据?

在后台 Swift 中循环并将 json 数据附加到 UIImage[] 中

swift 如何检查来自 Json 的 NULL 值

swift 4 使用 Alamofire 解析没有键的 JSON

Swift缓存tableview json数据

如何在 Swift 3 中解析来自 URL 的 JSON 数据