【问题标题】:Unable to parse json using alamofire using closures无法使用闭包使用 alamofire 解析 json
【发布时间】:2017-02-08 10:01:58
【问题描述】:

目前正在学习 Swift,我是解析 json 的新手。 我正在尝试使用 swift 3 使用 alamofire 解析 json。但是我没有得到任何响应。我应该如何获取嵌套的参数 1 或参数 2 的值? 我的 json 看起来像这样:

{  "data":{  
  "level1":{  
     "level2":{  
        "parameter1":"000000",
        "parameter2":"00/00/00 00:00:00",
        "parameter3":"00.0",
     }

我的 swift 代码如下所示,

func downloadDataDetails(completed: @escaping DownloadComplete) {
    //Get data from URL
    Alamofire.request("MY_URL").responseJSON { response in
        let result = response.result

        if let dict = result.value as? Dictionary<String , AnyObject> {
            if let data = dict["data"] as? String {
                if let level1 = dict["level1"] as? String {
                    if let level2 = dict["level2"] as? String? {
                        self._myValue = level2
                    }
                }
            }
        }
        completed()
    }

【问题讨论】:

    标签: json swift alamofire


    【解决方案1】:

    我推荐你使用 SwiftJson (https://cocoapods.org/pods/SwiftyJSON)

    如果您需要验证某些东西是否存在,您可以使用 .exist()(返回布尔值)

    func test() {
            let json: JSON = [   "data":[
                "level1":[
                    "level2":[
                        "parameter1":"000000",
                        "parameter2":"00/00/00 00:00:00",
                        "parameter3":"00.0"
                    ]
                ]
                ]
                ]
                print(json) //Create a breakpoint here
        }
    

    如果你有这个 JSON 并且你需要知道 parameter1 是否存在:

    (在 print(json) 中打断点)

    (在控制台中) (lldb)po json["data"]["level1"]["level2"]["parameter1"].exists() // response true

    在代码中是:

    if json["data"]["level1"]["level2"]["parameter1"].exists(){
    
            }
    

    如果你需要得到的值是:

    if json["data"]["level1"]["level2"]["parameter1"].exists(){
    
                let parameter1 = json["data"]["level1"]["level2"]["parameter1"]
                print(parameter1)
            }
    

    完整示例:

    func test() {
            let json: JSON = [   "data":[
                "level1":[
                    "level2":[
                        "parameter1":"000000",
                        "parameter2":"00/00/00 00:00:00",
                        "parameter3":"00.0"
                    ]
                ]
                ]
                ]
            if json["data"]["level1"]["level2"]["parameter1"].exists(){
    
                let parameter1 = json["data"]["level1"]["level2"]["parameter1"]
                print(parameter1)
            }
                print(json["parameter1"])
        }
    

    控制台日志是:

    000000
    {
      "data" : {
        "level1" : {
          "level2" : {
            "parameter1" : "000000",
            "parameter3" : "00.0",
            "parameter2" : "00\/00\/00 00:00:00"
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      相关资源
      最近更新 更多