无法使用闭包来使用alamofire解析json

时间:2017-02-08 10:01:58

标签: json swift alamofire

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

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

我的快速代码看起来像这样,

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()
    }

1 个答案:

答案 0 :(得分: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,你需要知道参数1是否存在:

(在打印中放置一个断点(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"
      }
    }
  }
}