利用中斷點將 JSON Data 變成字串
Published in
4 min readFeb 18, 2021
開發 iOS App 時,我們時常串接 API 抓取 JSON 資料。不過寫 code 寫多了,難免遇到 bug,有時在 JSONDecoder 解析 JSON 時會遇到問題。此時我們通常有兩種解法:
解法1: 研究 JSONDecoder 告訴我們的錯誤訊息
解法2: 將 JSON Data 變成字串,研究 JSON 資料是否有問題
假設原本抓取 JSON 的程式如下,在不改動程式的前提下,我們可以利用中斷點將 JSON Data 變成字串顯示。
struct SearchResponse: Codable {
let resultCount: Int
let results: [StoreItem]
}
struct StoreItem: Codable {
let artistName: String
let trackName: String
}
class ViewController: UIViewController {
func fetchItems() {
let urlStr = "https://itunes.apple.com/search?term=swift&media=music"
if let url = URL(string: urlStr) {
URLSession.shared.dataTask(with: url) { data, response , error in
if let data {
let decoder = JSONDecoder()
do {
let searchResponse = try decoder.decode(SearchResponse.self, from: data)
print(searchResponse)
} catch {
print(error)
}
}
}.resume()
}
}
override func viewDidLoad() {
super.viewDidLoad()
fetchItems()
}
}
加入中斷點
在 data 已經抓到後設定中斷點。
從中斷點箭頭的右鍵選單點選 Edit Breakpoint
Action 選擇 Add Action
Action 選擇 Debugger Command
輸入將 Data 變成 String 印出的指令
po print(String(data: data, encoding: .utf8)!)
ps: 關於 po 的相關說明,可參考以下連結。
執行 App 後,程式順利停在剛剛設定的中斷點,並且印出 JSON 的文字內容。