iosjsonswiftnsjsonserialization

How to get readable JSON after NSJSONSerialization.dataWithJSONObject in Swift


I have some code similar to this (I've simplified it here):

let text = "abc" let iosVersion = UIDevice.currentDevice().systemVersion

let message = ["Text" : text, "IosVersion" : iosVersion]

if NSJSONSerialization.isValidJSONObject(message){

    let url = NSURL(string: "http://localhost:3000/api/someapi")

    var request = NSMutableURLRequest(URL: url!)
    var data = NSJSONSerialization.dataWithJSONObject(message, options: nil, error: nil)


    print(data)

    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.HTTPMethod = "POST"
    request.HTTPBody = data

    let task = session.dataTaskWithRequest(request, completionHandler: nil)

    task.resume()
}

This works fine, but I'd like to see the JSON in a readable format so that I can copy/paste it into fiddler/curl to help diagnose my API at the server end. The println(data) line above gives me hexadecimal data. Any ideas?


Solution

  • Create a String from Data and it's good practice to handle the error

    do {
      let data = try JSONSerialization.data(withJSONObject: message)
      let dataString = String(data: data, encoding: .utf8)!
      print(dataString)
    
      // do other stuff on success
    
    } catch {
      print("JSON serialization failed: ", error)
    }