Skip to content

Instantly share code, notes, and snippets.

@ashishkakkad8
Last active December 31, 2017 05:59
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save ashishkakkad8/7c599c6e052d722b0083 to your computer and use it in GitHub Desktop.
Save ashishkakkad8/7c599c6e052d722b0083 to your computer and use it in GitHub Desktop.
JSON Array Parsing in Swift Langauage - Swift 3 – iOS 10 – Xcode 8 GM
//
// ViewController.swift
// SwiftJSONParsingDemo
//
// Created by Ashish Kakkad on 12/10/16.
// Copyright © 2016 Kode. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var names: [String] = []
var contacts: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
let url=URL(string:"http://api.androidhive.info/contacts/")
do {
let allContactsData = try Data(contentsOf: url!)
let allContacts = try JSONSerialization.jsonObject(with: allContactsData, options: JSONSerialization.ReadingOptions.allowFragments) as! [String : AnyObject]
if let arrJSON = allContacts["contacts"] {
for index in 0...arrJSON.count-1 {
let aObject = arrJSON[index] as! [String : AnyObject]
names.append(aObject["name"] as! String)
contacts.append(aObject["email"] as! String)
}
}
print(names)
print(contacts)
self.tableView.reloadData()
}
catch {
}
}
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!, didSelectRowAtIndexPath indexPath: IndexPath!) {
print("You selected name : "+names[indexPath.row])
}
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell{
var cell = tableView.dequeueReusableCell(withIdentifier: "cell")
if !(cell != nil) {
cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
}
cell?.textLabel?.text=self.names[indexPath.row]
cell?.detailTextLabel?.text = self.contacts[indexPath.row]
return cell!
}
}
@polamgh
Copy link

polamgh commented Nov 2, 2016

in xcode 8
in simulator is ok but when select the phone got this message 'Ambiguous use of subscript' at the line 'let aObject = arrJSON[index] as! [String : AnyObject]'

@grimlock591
Copy link

I have looked for this snippet all over the internet. Thank you

Copy link

ghost commented Feb 7, 2017

@polamgh did you ever figure it out?

@chaoticbit
Copy link

@polamgh I encountered with the same issue. Xcode 8 swift 3. Did you figure it out?

@macksz
Copy link

macksz commented Mar 1, 2017

Hi,
Please, I need help.
I encountered with the same issue too. Xcode 8 swift 3. Did you figure it out?
Kind Regards

@maninipoornam
Copy link

@polamgh @Dengekiko Did anyone figure that out. Having same issue.

@mayuritalaviya
Copy link

@maninipoornam : Just small changes in above code and it's working on phone.

let allContacts = try JSONSerialization.jsonObject(with: allContactsData, options: JSONSerialization.ReadingOptions.allowFragments) as! [String : NSArray]
            if let arrJSON = allContacts["contacts"] {
                for index in 0...arrJSON.count-1 {
                    
                    let aObject = arrJSON[index] as! [String: Any]
                    
                    names.append(aObject["name"] as! String)
                    contacts.append(aObject["email"] as! String)
                }
            }

@txdywy
Copy link

txdywy commented Apr 25, 2017

let allContactsData = try Data(contentsOf: self.url!)
let allContacts = try JSONSerialization.jsonObject(with: allContactsData, options: JSONSerialization.ReadingOptions.allowFragments) as! [String : AnyObject]
if let arrJSON = allContacts["data"] as! [String]?{
for index in 0...arrJSON.count-1 {

                let aObject = arrJSON[index] as! String

@robertoltrocha
Copy link

The code is running well but when I lost the internet connection the code crash in the line "let allContactsData = try Data(contentsOf: url!)". Can someone help me? I am using swift 3

@X901
Copy link

X901 commented Sep 12, 2017

Thank You

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment