This is sure to be asked several times, but I have not yet found the right answer, although I have been looking very hard.
I use Alamofire and SwiftyJSON and my JSON data looks like that:
{
  "528" : {
    "name" : "Name 1",
    "id" : "528",
    "product_id" : null,
    "visible" : "0",
    "level" : "2"
  },
  "29" : {
    "name" : "Name 2",
    "id" : "29",
    "product_id" : null,
    "visible" : "1",
    "level" : "1"
  },
  "173" : {
    "name" : "Name 3",
    "id" : "173",
    "product_id" : null,
    "visible" : "0",
    "level" : "2"
  },
  "143" : {
    "name" : "Name 4",
    "id" : "143",
    "product_id" : null,
    "visible" : "1",
    "level" : "2"
  },
...with this code:
Alamofire.request(.GET, dataURL, parameters: nil, encoding: .JSON)
    .responseJSON { (request, response, jsonData, error) in
        let json = JSON(jsonData!) 
        println(json)
    }
...so everything should be fine with JSON
How can i access to that data? I mean how can i get names, ids, product_ids etc
How can i put that data (name) to my TableViewController?
To parse the response in Alamofire API request, we will use JSONDecoder, which is an object that decodes instances of a data type from JSON objects. The decode method of JSONDecoder is used to decode the JSON response. It returns the value of the type we specify, decoded from a JSON object.
I am using both SwiftyJSON and Alamofire in one of my projects. Here is how I am using it.
// Step 1
protocol APIProtocol {
  func didReceiveResult(results: JSON)
}
// Step 2
func get(path: String, parameters: [String: AnyObject]? = nil, delegate: APIProtocol? = nil){
  let url = "\(self.hostname)\(path)"
  NSLog("Preparing for GET request to: \(url)")
  Alamofire.request(.GET, url, parameters: parameters)
    .responseJSON { (req, res, json, error) in
      if(error != nil) {
        NSLog("GET Error: \(error)")
        println(res)
      }
      else {
        var json = JSON(json!)
        NSLog("GET Result: \(json)")
        // Call delegate if it was passed into the call
        if(delegate != nil) {
            delegate!.didReceiveResult(json)
        }
      }
    }
}
// Step 3
class ActivityViewController: UITableViewController, APIProtocol {
  var activityModelList: NSMutableArray = [] // This is the array that my tableView is using.
  ... 
  func didReceiveResult(result: JSON) {
    var activities: NSMutableArray = []
    NSLog("Activity.didReceiveResult: \(result)")
    for (index: String, activity: JSON) in result {
      var activityModel = ActivityModel(
        id: activity["id"].intValue,
        message: activity["message"].stringValue
      )
      activities.addObject(activityModel)
    }
    // Set our array of new models
    activityModelList = activities
    // Make sure we are on the main thread, and update the UI.
    dispatch_sync(dispatch_get_main_queue(), {
      self.refreshControl!.endRefreshing()
      self.tableView.reloadData()
    })
  }
}
// Step 4
override func viewDidLoad() {
  MyAPI.get("/activities", delegate: self)
}
                        The accessors (for SwiftyJSON at least) work like:
if let userName = json[0]["528"]["name"].string{
    println(userName) // "Name 1"
}
More information on how to use SwiftyJSOn can be found here in its official documentation: https://github.com/SwiftyJSON/SwiftyJSON
Regarding how to put that data into a UITableView, there are many methods. Set up a UITableView cell and then load in the JSON data in some sort of array for instance.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With