lohenyumnam
6/28/2019 - 12:19 PM

Pretty print JSON string from Data in Swift 4.1 (especially useful printing to Xcode console)

Pretty print JSON string from Data in Swift 4.1 (especially useful printing to Xcode console)

import Foundation

extension Data {
    var prettyPrintedJSONString: NSString? { /// NSString gives us a nice sanitized debugDescription
        guard let object = try? JSONSerialization.jsonObject(with: self, options: []),
              let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted]),
              let prettyPrintedString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { return nil }

        return prettyPrintedString
    }
}

let str = "{\"foo\": \"bar\"}".data(using: .utf8)!.prettyPrintedJSONString!
debugPrint(str)
/* prints:
 {
    "foo" : "bar"
 }
*/