Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 339
Neil Billingham Avatar asked Jul 04 '15 11:07

Neil Billingham


1 Answers

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)
}
like image 176
vadian Avatar answered Oct 21 '22 02:10

vadian