Есть ли лучший способ "Pretty Print" строки JSON, чем я использую - PullRequest
0 голосов
/ 01 мая 2018

У меня есть данные json на стороне сервера.

Если я использую следующий код, я получаю не очень печатную строку:

print(String(bytes: jsonData, encoding: String.Encoding.utf8))

Чтобы сделать его довольно печатным, я использую следующий код:

if let json = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) {
   if let prettyPrintedData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted) {
      print(String(bytes: prettyPrintedData, encoding: String.Encoding.utf8) ?? "NIL")
   }
}

Но, похоже, это не лучший способ.

Так кто-нибудь знает, как распечатать входящий jsonData, чтобы распечатать его?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Немного более симпатичная версия того, что у вас есть:

if let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers), let jsonData = try? JSONSerialization.data(withJSONObject: json, options: .prettyPrinted) {
    print(String(decoding: jsonData, as: UTF8.self))
} else {
    print("json data malformed")
}
0 голосов
/ 01 мая 2018

Я не могу придумать что-нибудь более красивое, чем нативный тип.

if let json = try? JSONSerialization.jsonObject(with: jsonData, options: []) {
    if let jsonArray = json as? [Any] { print(jsonArray) }
    else if let jsonDict = json as? [String:Any] { print(jsonDict) }
    else { print("Couldn't convert json") }
}
...