Parse JSON Data with GET Method Using JsonDecoder in iOS

Parse JSON Data(GET Method) in UITableViewCell Using JsonDecoder Swift 4 & Xcode 9


1) -- ViewController Class

First Create a new Project (ParseDataGETMethod) after make a struct (GetJsonData)
type data parameter


import UIKit

struct GetJsonData:Decodable {
    let name: String
    let capital: String
    let alpha2Code: String
    let alpha3Code: String
    let region: String
    let subregion: String
    
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    var arrData = [GetJsonData]()
    @IBOutlet var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        getJSONData()
    }
    func getJSONData(){
        let url = URL(string: "https://restcountries.eu/rest/v2/all")
        let session = URLSession.shared
        session.dataTask(with: url!) { (data, response, error) in
            do{
                if error == nil {
                    self.arrData = try JSONDecoder().decode([GetJsonData].self, from: data!)
                    for mainarr in self.arrData{
                       // print(mainarr.name, ":", mainarr.capital, "-", mainarr.alpha2Code )
                        DispatchQueue.main.sync {
                            self.tableView.reloadData()
                        }
                    }
                }
            }catch{
                print("Error in JSON Data")
            }
            
        }.resume()
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.arrData.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell:tableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! tableViewCell
        cell.lblname.text = "Name: \(arrData[indexPath.row].name)"
        cell.lblcapital.text = "Capital: \(arrData[indexPath.row].capital)"
        return cell
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let detail:DetailViewController = self.storyboard?.instantiateViewController(withIdentifier: "detail") as! DetailViewController
        detail.strregion = "Region:- \(arrData[indexPath.row].region)"
        detail.strsubregion = " SubRegion:- \(arrData[indexPath.row].subregion)"
        detail.stralpha2 = "Alpha2:-\(arrData[indexPath.row].alpha2Code)"
        detail.stralpha3 = "Aipha3:- \(arrData[indexPath.row].alpha3Code)"
        self.navigationController?.pushViewController(detail, animated: true)
        
        
    }
    
}

Parse JSON Data(GET Method)


2) ---

import UIKit

class tableViewCell: UITableViewCell {
    
    @IBOutlet var lblname: UILabel!
    @IBOutlet var lblcapital: UILabel!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

Output:-



Parse JSON Data(GET Method)



3)----

import UIKit

class DetailViewController: UIViewController {

    @IBOutlet var alpha2: UILabel!
    @IBOutlet var alpha3: UILabel!
    @IBOutlet var subregion: UILabel!
    @IBOutlet var region: UILabel!
    var strregion = ""
    var strsubregion = ""
    var stralpha2 = ""
    var stralpha3 = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()
        alpha2.text = stralpha2
        alpha3.text = stralpha3
        region.text = strregion
        subregion.text = strsubregion
    }

}



Output:-



Parse JSON Data(GET Method)

Popular posts from this blog

ASO Off-Page Activities - Free Submission Site Promote Mobile App

Mobile Apps Optimizing High Rank in App Store’s Android or iphone - ASO

How Create Animated Circle Progress Bar iOS 11 Swift 4

Core Data With Swift 4.0 Tutorial

Complete Increasing Search Ranking mobile Application