Downloading and parsing json in swift Downloading and parsing json in swift swift swift

Downloading and parsing json in swift


These two functions worked for me:

    func getJSON(urlToRequest: String) -> NSData{        return NSData(contentsOfURL: NSURL(string: urlToRequest))    }    func parseJSON(inputData: NSData) -> NSDictionary{        var error: NSError?        var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary        return boardsDictionary    }


This code works fine for me. Just init data property with data = NSMutableData() and write NSURLConnectionDelegate here class ViewController: UIViewController, NSURLConnectionDelegate

import UIKitclass ViewController: UIViewController, NSURLConnectionDelegate {    @lazy var data = NSMutableData()    override func viewDidLoad() {        super.viewDidLoad()    }    override func viewWillAppear(animated: Bool) {        super.viewWillAppear(animated)        startConnection()    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()    }    func startConnection(){        let urlPath: String = "http://binaenaleyh.net/dusor/"        var url: NSURL = NSURL(string: urlPath)        var request: NSURLRequest = NSURLRequest(URL: url)        var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)        connection.start()    }    func connection(connection: NSURLConnection!, didReceiveData data: NSData!){        self.data.appendData(data)    }    func buttonAction(sender: UIButton!){        startConnection()    }    func connectionDidFinishLoading(connection: NSURLConnection!) {        var err: NSError        // throwing an error on the line below (can't figure out where the error message is)        var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary        println(jsonResult)    }}

here is output:

{    "ders sayisi" = 15;    dersler =     (                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 2;            12 = "";            2 = 2;            3 = "CEE 102";            4 = "Logic Circuits";            5 = 3;            6 = "6.00";            7 = "YRD.DO\U00c7.DR.INDRIT MYDERRIZI";            8 = 0;            9 = IA;        },                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 1;            12 = "";            2 = 2;            3 = "CIP 102";            4 = "Civic Involment Projects";            5 = 0;            6 = "2.00";            7 = "SE\U00c7\U0130L AVCI/BA\U015eAK CANSU AK\U00c7EL\U0130K/\U00c7A\U011eLA UNGUN";            8 = 0;            9 = P;        },                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 2;            12 = "";            2 = 2;            3 = "COME 108";            4 = "Algorithms and Programming II";            5 = 3;            6 = "6.00";            7 = "\U00d6\U011eR.G\U00d6R.DR.B\U0130RSEN G\U00dcLDEN \U00d6ZDEM\U0130R";            8 = 41;            9 = C;        },                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 1;            12 = "";            2 = 2;            3 = "COME 335";            4 = "Mobile Application Development";            5 = 3;            6 = "5.00";            7 = "\U00d6\U011eR.G\U00d6R.OZAN UYSAL";            8 = TeacherHold;            9 = TeacherHold;        },                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 1;            12 = "";            2 = 2;            3 = "ENG 112";            4 = "Advanced English For Engineering and Natural Sciences I";            5 = 2;            6 = "3.00";            7 = "OKT.ERIC BEECHER";            8 = 48;            9 = F;        },                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 1;            12 = "";            2 = 2;            3 = "PHYS 102";            4 = "Physics II";            5 = 4;            6 = "5.00";            7 = "YRD.DO\U00c7.DR.\U00d6ZG\U00dcL KURTULU\U015e \U00d6ZT\U00dcRK";            8 = "-1";            9 = F;        },                {            0 = "2013-2014";            1 = BAHAR;            10 = TeacherHold;            11 = 2;            12 = "";            2 = 2;            3 = "T\U00dcRK 102";            4 = "T\U00fcrk Dili II";            5 = 2;            6 = "2.00";            7 = "\U00d6\U011eR.G\U00d6R.\U015eER\U0130FE GEZG\U0130N";            8 = 10;            9 = F;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 2;            12 = "";            2 = 1;            3 = "CHEM 101";            4 = Chemistry;            5 = 3;            6 = "5.00";            7 = "YRD.DO\U00c7.DR.AY\U015eEN TULPAR";            8 = TeacherHold;            9 = F;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 1;            12 = "";            2 = 1;            3 = "CIP 101";            4 = "Civic Involment Projects";            5 = 0;            6 = "1.00";            7 = "YRD.DO\U00c7.DR.FATMA G\U00dcL AYGEN/Staff CIP1/SE\U00c7\U0130L AVCI/D\U0130LAYDA EM\U0130R/BA\U015eAK CANSU AK\U00c7EL\U0130K/\U00c7A\U011eLA UNGUN";            8 = TeacherHold;            9 = P;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 3;            12 = "";            2 = 1;            3 = "COME 107";            4 = "Algorithms and Programming I";            5 = 4;            6 = "5.00";            7 = "PROF.DR.M\U0130TAT UYSAL";            8 = TeacherHold;            9 = "C+";        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 2;            12 = "";            2 = 1;            3 = "ENG 101";            4 = "Advanced English";            5 = 2;            6 = "3.00";            7 = "OKT.EZG\U0130 ARGUN";            8 = TeacherHold;            9 = B;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 1;            12 = "";            2 = 1;            3 = "IUL 100";            4 = "Introduction to University Life";            5 = 0;            6 = "1.00";            7 = "YRD.DO\U00c7.DR.FATMA G\U00dcL AYGEN";            8 = TeacherHold;            9 = F;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 2;            12 = "";            2 = 1;            3 = "MATH 111";            4 = "Calculus I";            5 = 4;            6 = "5.00";            7 = "DO\U00c7.DR.G\U00dcRSEL YE\U015e\U0130LOT";            8 = TeacherHold;            9 = F;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 4;            12 = "";            2 = 1;            3 = "PHYS 101";            4 = "Physics I [CNE]";            5 = 4;            6 = "5.00";            7 = "YRD.DO\U00c7.DR.AR\U0130F \U00d6ZBAY";            8 = TeacherHold;            9 = F;        },                {            0 = "2013-2014";            1 = "G\U00dcZ";            10 = TeacherHold;            11 = 9;            12 = "";            2 = 1;            3 = "T\U00dcRK 101";            4 = "T\U00fcrk Dili I [CNE]";            5 = 2;            6 = "2.00";            7 = "\U00d6\U011eR.G\U00d6R.ARZU AYG\U00dcN";            8 = TeacherHold;            9 = F;        }    );}


UPDATE: Swift 4

// Asynchronous Http call to your api url, using URLSession:URLSession.shared.dataTask(with: URL(string: "http://api.site.com/json")!) { (data, response, error) -> Void in    // Check if data was received successfully    if error == nil && data != nil {        do {            // Convert to dictionary where keys are of type String, and values are of any type            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: Any]            // Access specific key with value of type String            let str = json["key"] as! String        } catch {            // Something went wrong        }    }}.resume()

Here is how to do it with Swift 2 and NSURLSession:

// Asynchronous Http call to your api url, using NSURLSession:NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "http://api.site.com/json")!, completionHandler: { (data, response, error) -> Void in    // Check if data was received successfully    if error == nil && data != nil {        do {            // Convert NSData to Dictionary where keys are of type String, and values are of any type            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! [String:AnyObject]            // Access specific key with value of type String            let str = json["key"] as! String        } catch {            // Something went wrong        }    }}).resume()