如何将JSON格式数据的键值对按行拆分输出,提升可读性
问题根因
你主业务代码的问题出在两步处理逻辑错误:
qr.data.decode('utf-8')得到的是JSON格式的字符串,不是Python字典/对象- 直接把字符串传给
json.dumps()时,方法会把它当做普通字符串处理,不会按照JSON结构做缩进换行,只会输出一整行转义后的字符串
修复方案
你需要先把解码得到的JSON字符串反序列化为Python数据结构,再调用json.dumps()时加上indent参数指定缩进量,和你测试代码的逻辑一致,修复后代码如下:
import json qrType = qr.type # 第一步:先把解码后的JSON字符串转为Python字典 qr_data_obj = json.loads(qr.data.decode('utf-8')) # 第二步:对字典做格式化序列化,指定缩进4个空格 qrData = json.dumps(qr_data_obj, sort_keys=True, indent=4, ensure_ascii=False) # 打印输出 print("[INFORMATION] Found {} barcode:\n{}".format(qrType, qrData))
参数说明
indent=4:指定JSON层级缩进为4个空格,实现自动换行分层显示- 可选参数
ensure_ascii=False:如果你的JSON里有中文等非ASCII字符,加这个参数可以正常显示,不会输出Unicode转义序列
内容的提问来源于stack exchange,提问作者Kwinten
相关产品推荐
相关产品推荐

