首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Alamofire发布和解析响应\ Swift 5

使用Alamofire发布和解析响应\ Swift 5
EN

Stack Overflow用户
提问于 2020-01-20 20:24:36
回答 2查看 3.4K关注 0票数 0

我有以下JSON,它是当参数occupation是POST时生成的:

代码语言:javascript
运行
AI代码解释
复制
[
    {
        "group": "GR2923",
        "number": "0239039",
    }
]

我需要在Swift中解析这些数据,并将group的值分配给变量groupValue,将number的值分配给变量numberValue

我尝试过使用类似的方法,但我不知道如何将我的JSON数组实现到Alamofire:

代码语言:javascript
运行
AI代码解释
复制
Alamofire.request(url, method: .get)
  .responseJSON { response in
      if response.data != nil {
        let json = JSON(data: response.data!)
        let name = json["group"][0][""].string
        if name != nil {
          print(name!)
        }
      }
  }
EN

回答 2

Stack Overflow用户

发布于 2020-01-20 20:32:01

你可以试试这个:

代码语言:javascript
运行
AI代码解释
复制
Alamofire.request(url, method: .get)
  .responseJSON { response in
    if let value = response.value {
        let json = JSON(value).arrayValue
        if let name = json[0]["group"].string {
             print(name!)
         }
     }
}

对于使用params的post请求,可以使用以下方法

代码语言:javascript
运行
AI代码解释
复制
 func getResult(url:String, paramKey:[String], paramValue:[Any], completion: @escaping (Bool, Any?) -> Void) {

        let _headers : HTTPHeaders = ["Content-Type":"application/x-www-form-urlencoded"]
        let params : Parameters = getParams(paramKey: paramKey, paramValue: paramValue)

        guard let url = URL(string: url) else {
            completion(false, nil)
            return
        }

        Alamofire.request(url,
                          method: .post,
                          parameters: params, encoding: URLEncoding.httpBody , headers: _headers)
            .validate()
            .responseJSON { response in

                guard response.result.isSuccess else {
                    completion(false, nil)
                    return
                }

                if let value = response.result.value{
                    let json = JSON(value)

                    if json["status_code"].stringValue == "200" {
                        completion(true, json)
                    } else {
                        completion(false, json)
                    }
                }
        }
    }

    func getParams(paramKey:[String], paramValue:[Any]) -> [String:Any] {

        var dictionary =  [String:Any]()

        dictionary.updateValue(Constants.API_TOKEN, forKey: HTTPParams.PARAM_API_TOKEN)

        for index in 0..<paramKey.count {
            dictionary.updateValue(paramValue[index], forKey: paramKey[index])
        }

        return dictionary
    }

ViewController,您可以使用这个调用

代码语言:javascript
运行
AI代码解释
复制
    let url = "Your API Url"
    let params = ["occupation"] // Param key
    let paramValues = ["doctor"] // Param values  
   // UrlRequest the file name where the method is placed 
    UrlRequest().getResult(url: url, paramKey: params, paramValue: paramValues) { (success, data) in
        if success {
          // Success result with data
        }else{
            // Failed 
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2020-01-20 22:23:01

您可以使用它来解析json。首先,您必须检查json值是否为NSDictionary。

代码语言:javascript
运行
AI代码解释
复制
  Alamofire.request(stringURL, method: .get)
        .responseJSON { response in
            if let value = response.result.value as? NSDictionary {
                //    print(value)

                if let group =   value["group"] as? String {
                //    print(group)

}
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59834165

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文