Elegant way to view JSONEncode() output in swift Elegant way to view JSONEncode() output in swift json json

Elegant way to view JSONEncode() output in swift


The encode() method returns Data containing the JSON representation in UTF-8 encoding. So you can just convert it back to a string:

var test = [String : String] ()test["title"] = "title"test["description"] = "description"let encoder = JSONEncoder()if let json = try? encoder.encode(test) {    print(String(data: json, encoding: .utf8)!)}

Output:

{"title":"title","description":"description"}


With Swift 4, String has a initializer called init(data:encoding:). init(data:encoding:) has the following declaration:

init?(data: Data, encoding: String.Encoding)

Returns a String initialized by converting given data into Unicode characters using a given encoding.


The following Playground snippets show how to use String init(data:encoding:) initializer in order to print a JSON data content:

import Foundationvar test = [String : String]()test["title"] = "title"test["description"] = "description"let encoder = JSONEncoder()if let data = try? encoder.encode(test),    let jsonString = String(data: data, encoding: .utf8) {    print(jsonString)}/* prints: {"title":"title","description":"description"} */

Alternative using JSONEncoder.OutputFormatting set to prettyPrinted:

import Foundationvar test = [String : String]()test["title"] = "title"test["description"] = "description"let encoder = JSONEncoder()encoder.outputFormatting = .prettyPrintedif let data = try? encoder.encode(test),    let jsonString = String(data: data, encoding: .utf8) {    print(jsonString)}/* prints: {   "title" : "title",   "description" : "description" } */