SeaWarrior404
SeaWarrior404

Reputation: 4167

Unable to parse json using alamofire using closures

Currently learning Swift and I'm new to parsing of json. I'm trying to parse json using alamofire using swift 3. However Im not getting any response. How should I get the value of parameter1 or parameter 2 which were nested? My json looks like this:

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

My swift code looks like this ,

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

Upvotes: 1

Views: 152

Answers (1)

Marlon Ruiz
Marlon Ruiz

Reputation: 1842

I recommend you that use SwiftJson (https://cocoapods.org/pods/SwiftyJSON)

if you need to validate that something exist you can use .exist() (Return a boolean)

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
    }

If you have this JSON and you need to know if parameter1 exist:

(Put a break point in print(json))

(In the Console) (lldb) po json["data"]["level1"]["level2"]["parameter1"].exists() // response true

In the code would be:

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

        }

If you need to get the value would be:

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

            let parameter1 = json["data"]["level1"]["level2"]["parameter1"]
            print(parameter1)
        }

Complete example:

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"])
    }

The console log is:

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

Upvotes: 1

Related Questions