var test = [String : String] ()
test["title"] = "title"
test["description"] = "description"
let encoder = JSONEncoder()
let json = try? encoder.encode(test)
How can I see the output of the json?
If I use print(json) the only thing I get is Optional(45 bytes)
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
Stringinitialized by converting givendatainto Unicode characters using a givenencoding.
The following Playground snippets show how to use String init(data:encoding:) initializer in order to print a JSON data content:
import Foundation
var 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 Foundation
var test = [String : String]()
test["title"] = "title"
test["description"] = "description"
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
if let data = try? encoder.encode(test),
let jsonString = String(data: data, encoding: .utf8) {
print(jsonString)
}
/*
prints:
{
"title" : "title",
"description" : "description"
}
*/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With