调试器中如何格式化打印API调用返回的JSON响应?
调试时如何格式化打印API返回的JSON数据
我之前调试API响应的时候也碰到过一模一样的问题!直接po data只会输出一堆晦涩的二进制描述,debugPrint(data)在LLDB里又没反应,想要看到整齐的JSON结构确实有点头疼。试试下面这几个实用方法:
1. 直接用LLDB命令解析并格式化
不用改代码,在调试器里直接敲这条命令(把data换成你的变量名):
po try? JSONSerialization.jsonObject(with: data, options: [])
这会把Data转成可打印的字典或数组,虽然排版不是最规整,但能快速看到数据结构。如果想要更漂亮的缩进格式,用这条进阶命令:
po try? JSONSerialization.data(withJSONObject: JSONSerialization.jsonObject(with: data, options: []), options: .prettyPrinted).flatMap { String(data: $0, encoding: .utf8) }
执行后就能得到你想要的{ "firstName" : "John", "lastName" : "Doe", ... }这种格式化JSON了。
2. 写个Swift扩展,一键调用
如果经常需要调试JSON,建议给Data加个扩展,以后调试更高效:
extension Data { func prettyJSON() -> String? { guard let jsonObj = try? JSONSerialization.jsonObject(with: self), let prettyData = try? JSONSerialization.data(withJSONObject: jsonObj, options: .prettyPrinted), let prettyString = String(data: prettyData, encoding: .utf8) else { return nil } return prettyString } }
之后在调试器里只需要输入:
po data.prettyJSON()
就能直接拿到格式化好的JSON字符串,省心又省力。
3. 用Xcode自带的预览功能(最省心!)
其实Xcode早就帮我们想到了——当调试暂停时,找到data变量,点击它右侧的「眼睛」图标(预览按钮),在弹出的预览窗口顶部切换到「JSON」标签页,就能直接看到完美格式化的JSON结构了,连命令都不用敲!
我现在调试API响应基本都用这个方法,直观又快捷。
内容的提问来源于stack exchange,提问作者Prabhu
相关产品推荐
相关产品推荐

