title: How to convert JSON to a dictionary in swift iOS?
body: <p>Hi I am making an app which works with an API. I have a working code which receives data from the API. But I thought it would be better to make my code a bit cleaner. I want to set the data from the api in an dictionary but I can't get it working. Any help would be appreciated, thanx!</p>
  
  <p>Here is the api result: 
  <a href="https://i.stack.imgur.com/51fxn.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/51fxn.png" alt="enter image description here"></a></p>
  
  <p>I want to set the AutorId and BranchId etc etc in a dictionary.
  And this is de code which I have now.
  This is the Project class: </p>
  
  <pre><code>class Project: NSObject {
  var AuthorId: String?
  var BranchId: String?
  var CompanyId: String?
  var ContactId: String?
  var Date: String?
  var Deadline: String?
  var Description: String?
  var Id: String?
  var State: String?
  init(dictionary: [String: Any]) {
      self.AuthorId = dictionary["AuthorId"] as? String
      self.BranchId = dictionary["BranchId"] as? String
      self.CompanyId = dictionary["CompanyId"] as? String
      self.ContactId = dictionary["ContactId"] as? String
      self.Date = dictionary["Date"] as? String
      self.Deadline = dictionary["Deadline"] as? String
      self.Description = dictionary["Description"] as? String
      self.Id = dictionary["Id"] as? String
      self.State = dictionary["State"] as? String
  
  }
  </code></pre>
  
  <p>}</p>
  
  <p>and here I am trying to set it in an dictionary:</p>
  
  <pre><code>func apiRequest() {
      apiRequestHeader()
      var running = false
      let urlProjects = NSURL(string: "https://start.jamespro.nl/v4/api/json/projects/?limit=10")
      let task = session?.dataTask(with: urlProjects! as URL) {
          ( data, response, error) in
          if let taskHeader = response as? HTTPURLResponse {
              print(taskHeader.statusCode)
          }
          if error != nil {
              print("There is an error!!!")
              print(error)
          } else {
              if let content = data {
                  do {
                      let dictionary = try JSONSerialization.jsonObject(with: content) as! [String:Any]
                      print(dictionary)
  
                      if let items = dictionary["items"] as? [[String:Any]] {
                          let project = Project(dictionary: items)
                          print(project)
                          self.projects.append(project)
  
                          DispatchQueue.main.async(execute: {
                              self.tableView.reloadData()
                          })
  
                      }
                  }
                  catch {
                      print("Error: Could not get any data")
                  }
              }
          }
          running = false
      }
  
  
      running = true
      task?.resume()
  
      while running {
          print("waiting...")
          sleep(1)
      }
  
  }
  </code></pre>