#42 使用 JSONSerialization 印出排版後的 JSON
Published in
Aug 16, 2022
原本印出的JSON,全部的欄位都會擠在一起,也看不太出欄位有哪些
排版後的JSON,每個Key、Value都很正期的排列出來
作法
在專案內開一個File檔案並輸入下列程式碼,讓data能使用 JSONSerialization 進行編排
import Foundationextension Data {func prettyPrintedJSONString() {guardlet jsonObject = try? JSONSerialization.jsonObject(with: self, options: []),let jsonData = try? JSONSerialization.data(withJSONObject: jsonObject, options: [.prettyPrinted]),let prettyJSONString = String(data: jsonData, encoding: .utf8) else {print("Failed to read JSON Object.")return}print("prettyJSONString \(prettyJSONString)")}}
在讀取 API的程式碼內呼叫 data.prettyPrintedJSONString() 讓JSON排序,將 排序前 與 排序後 的 data 都印出來就可以看到明顯的差別
// 讓下載在背景執行寫法func useUrlSession(){// 網址全英文寫法let urlString = "https://itunes.apple.com/search?term=swift&media=music&country=tw"// 印出目前的 Threadprint(Thread.current)if let url = URL(string: urlString) {//使用 URLSession.shared 讓下載在背景執行// dataTask 回傳抓資料的任務URLSession.shared.dataTask(with: url) { data, response, error inif let data,let content = String(data: data, encoding: .utf8){print("content \(content)")data.prettyPrintedJSONString()}}.resume() // resume 啟動任務}}
參考資料