0

I'm having trouble parsing a JSON, sent from a PHP script, on IOS using swift. I just started learning IOS development this week and also had never worked with JSON before so any help would be greatly appreciated on parsing this correctly. I'm sending a result from a mysql query as a JSON to the app. Here is my swift code and the error log in which you can see the object received by the http service.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let secondViewController:VC2 = segue.destinationViewController as! VC2

    let myUrl = NSURL(string: "myscriptaddress");

            let request = NSMutableURLRequest(URL:myUrl!);

            request.HTTPMethod = "POST";

            let postString = "condition=" + String(currentval);

            request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

            secondViewController.mystring = "getting ready"

            let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
                data, response, error in
                guard data != nil else {
                    print("no data found: \(error)")
                    return
                }

                do {
                    if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {

                        print("Success")

                    } else {
                        let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
                        print("Error could not parse JSON: \(jsonStr)")

                    }
                } catch let parseError {
                    print(parseError)
                    let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
                    print("Error can't parse JSON: '\(jsonStr)'")

                }
            }

            task.resume()
}

And now the error log:

Error could not parse JSON: Optional([{"unidad":"sanfrancisco","capacidad":"15","uso":"5","telefono":"num"},{"unidad":"pediatricouniversitario","capacidad":"15","uso":"5","telefono":"num"},{"unidad":"sanjorge","capacidad":"15","uso":"7","telefono":"num"},{"unidad":"himacaguas","capacidad":"20","uso":"4","telefono":"num"},{"unidad":"himabayamon","capacidad":"20","uso":"8","telefono":"num"},{"unidad":"sanlucas","capacidad":"10","uso":"8","telefono":"num"},{"unidad":"auxiliomutuo","capacidad":"15","uso":"11","telefono":"num"}])

1 Answer 1

1

Its failing to unwrap the JSON data as a dictionary type. The JSON string provided is an array of objects.

Try this in your JSONObjectWithData call:

let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String : AnyObject]]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.