【发布时间】:2018-11-06 15:54:15
【问题描述】:
当初始 JSON 字符串的格式没有额外的空格或换行符时,将 JSON 字符串漂亮地打印为带有缩进的字符串的最简单方法是什么?
目前我正在运行json.loads(),然后在结果上运行json.dumps() 和indent=2。这行得通,但感觉就像我在浪费大量计算资源。
是否有更简单或更高效(内置)的方式来漂亮地打印 JSON 字符串? (同时保持它为有效的 JSON)
示例
import requests
import json
response = requests.get('http://spam.eggs/breakfast')
one_line_json = response.content.decode('utf-8')
pretty_json = json.dumps(json.loads(response.content), indent=2)
print(f'Original: {one_line_json}')
print(f'Pretty: {pretty_json}')
输出:
Original: {"breakfast": ["spam", "spam", "eggs"]}
Pretty: {
"breakfast": [
"spam",
"spam",
"eggs"
]
}
【问题讨论】:
-
你可能会使用漂亮的打印
-
-
您必须以一种或另一种方式解析字符串,然后以一种或另一种方式对其进行格式化和打印。我不认为
json.loads和json.dumps比任何其他方法都贵,例如使用pprint而不是dumps。可能更快。 -
@Idlehands 然后 OP 在 Python 对象上调用
json.dumps,将其转换为 JSON。整个问题是关于 JSON 输出的。 Python 对象的字符串表示形式与 JSON 不同,尽管它们都很相似。 -
@WhiteHotLoveTiger - 您能否针对您尝试解码的页面类型发布一个可测试的示例?链接“spam.eggs/breakfast”无法解析。如果您提供可用的 URL,我可以更新我的答案以反映解码 HTTP 请求的成本。
标签: python json python-3.x