API查询返回JSON如何实现逐行格式化打印?求技术解决方案
问题分析与解决
你的代码里犯了一个典型错误:对同一个数据做了两次JSON序列化,导致输出的是转义后的JSON字符串,而非格式化后的结构。
问题根源
json_object = dumps(host)已经把host(Python字典/列表)转换成了JSON字符串。- 随后
print(dumps(json_object, indent=4))又把这个字符串当成Python对象再次序列化,结果输出的是带转义字符的单行字符串,自然没有格式化效果。 - 另外你定义的
json_format()函数既没被调用,参数全是默认值,完全起不到格式化作用。
修正方案
直接对原始的Python数据(host)使用json.dumps()并指定indent参数即可实现美化输出,不需要二次序列化。
最简修正代码
import json def main(): hardware_id = "x" asset_id = "x" host = get_information(asset_id='x') # 假设该函数返回Python字典或列表 # 直接对host进行美化打印 print(json.dumps(host, indent=4, ensure_ascii=False))
可选:封装格式化函数
如果需要复用格式化逻辑,可以写一个简单的工具函数:
import json def pretty_print_json(data): # indent=4 控制缩进空格数,ensure_ascii=False 支持中文显示 print(json.dumps(data, indent=4, ensure_ascii=False, sort_keys=True)) def main(): hardware_id = "x" asset_id = "x" host = get_information(asset_id='x') pretty_print_json(host)
关键参数说明
indent=4:指定缩进的空格数,让每个键值对换行并缩进,实现你要的每行一个键值对的效果。ensure_ascii=False:如果返回的JSON包含中文,这个参数能避免中文被转成Unicode编码。sort_keys=True:可选参数,会按字母顺序排序键,让输出更规整。
内容的提问来源于stack exchange,提问作者yellowledbetterown
相关产品推荐
相关产品推荐

