如何通过 Alamofire 和 SwiftyJSON 在 UIViewController 中从根目录使用 JSON 对象

Posted

技术标签:

【中文标题】如何通过 Alamofire 和 SwiftyJSON 在 UIViewController 中从根目录使用 JSON 对象【英文标题】:How to use JSON objects from root in UIViewController with Alamofire and SwiftyJSON 【发布时间】:2017-09-22 12:18:17 【问题描述】:

我想用 Alamofire 和 SwiftyJSON 解析 JSON。

要解析的 JSON:


  "args": , 
  "headers": 
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "en-GB,en-US;q=0.8,en;q=0.6", 
    "Connection": "close", 
    "Cookie": "_gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1", 
    "Host": "httpbin.org", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
  , 
  "origin": "150.107.254.75", 
  "url": "http://httpbin.org/get"

我可以访问“args”,但无法访问我的UIViewControllerUILabel 中的“Accept-Encoding”

我在编码方面的尝试:

let Endpoint: String = "http://httpbin.org/get"
  Alamofire.request(Endpoint).responseJSON  response in
    if let json = response.result.value as? Array<Dictionary<String,Any>> 
      self.arrRes = json as [[String:AnyObject]]     
    
  

我想在我的UIViewControllerUILabel 中使用“标题”。

【问题讨论】:

根对象不是数组。 【参考方案1】:

您正在尝试将 json 转换为数组,但它是字典,试试这个:

let endpoint: String = "http://httpbin.org/get"
Alamofire.request(endpoint).responseJSON  response in
  if let json = response.result.value as? [String:Any],
     let headers = json["headers"] as? [String:Any] 

     self.label.text = headers["Accept-Encoding"] as? String
  

【讨论】:

另外,swift中的变量以小写开头

以上是关于如何通过 Alamofire 和 SwiftyJSON 在 UIViewController 中从根目录使用 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 objectMapper 和 Alamofire 发布嵌套的 json?

如何通过 Alamofire 和 SwiftyJSON 在 UIViewController 中从根目录使用 JSON 对象

当 Alamofire 请求通过身份验证时,我应该如何注销?

如何使用 RxSwift 和 Alamofire 使用分页?

通过使用 Alamofire 和解码获取 JSON - Swift 4

如何通过swift中的alamofire上传从手机中挑选的pdf和图像(任何一个选择的任何一个)文件