JSON Parsing in Swift Language – iOS 8

Here is tutorial about parsing JSON in Swift Language iOS 8

Swift JSON
Swift JSON

Create a Dictionary of all JSON data:

        let url=NSURL(string:"http://api.androidhive.info/contacts/")
        let allContactsData=NSData(contentsOfURL:url)
        var allContacts:Dictionary<String, AnyObject>=NSJSONSerialization.JSONObjectWithData(allContactsData, options: NSJSONReadingOptions.MutableContainers, error: nil) as Dictionary<String, AnyObject>

        NSLog("%@", allContacts)

Parse the JSON by finding your key:

        let contacts : AnyObject? = allContacts["contacts"]

        for contacts in allContacts.keys {
            println("All = \(contacts)")
            let contact : AnyObject? = allContacts[contacts]
            let collection = contact! as Array<Dictionary<String, AnyObject>>
            for subContact in collection {
                let name : AnyObject? = subContact["name"]
                let email : AnyObject? = subContact["email"]

                names+=name! as String
                emails+=email! as String

                println("Name: \(name)")
                println("Email: \(email)")
            }
        }

Complete code snippet with UITableView:

import UIKit

class ViewController: UIViewController,UITableViewDelegate, UITableViewDataSource
{

    @IBOutlet var tblJson : UITableView = nil

    var names: String[] = []
    var emails: String[] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        let url=NSURL(string:"http://api.androidhive.info/contacts/")
        let allContactsData=NSData(contentsOfURL:url)
        var allContacts:Dictionary<String, AnyObject>=NSJSONSerialization.JSONObjectWithData(allContactsData, options: NSJSONReadingOptions.MutableContainers, error: nil) as Dictionary<String, AnyObject>

        NSLog("%@", allContacts)

        let contacts : AnyObject? = allContacts["contacts"]

        for contacts in allContacts.keys {
            println("All = \(contacts)")
            let contact : AnyObject? = allContacts[contacts]
            let collection = contact! as Array<Dictionary<String, AnyObject>>
            for subContact in collection {
                let name : AnyObject? = subContact["name"]
                let email : AnyObject? = subContact["email"]

                names+=name! as String
                emails+=email! as String

                println("Name: \(name)")
                println("Email: \(email)")
            }
        }

        println(names)
        println(emails)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return self.names.count;
    }

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        var cell = tableView.dequeueReusableCellWithIdentifier("cell") as? UITableViewCell

        if !cell {
            cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "cell")
        }
        cell!.textLabel.text = self.names[indexPath.row]
        cell!.detailTextLabel.text = self.emails[indexPath.row]
        return cell
    }

    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
        println("You selected name : "+names[indexPath.row])
    }
}

Helping, Learning, Coding 🙂