如何漂亮地打印JSON文件?
2022-09-05 00:51:13
如何在Python中漂亮地打印JSON文件?
json
模块已经在转储
和转储
函数中实现了一些基本的漂亮打印,其参数指定要缩进的空格数:indent
>>> import json
>>>
>>> your_json = '["foo", {"bar":["baz", null, 1.0, 2]}]'
>>> parsed = json.loads(your_json)
>>> print(json.dumps(parsed, indent=4, sort_keys=True))
[
"foo",
{
"bar": [
"baz",
null,
1.0,
2
]
}
]
要解析文件,请使用 json.load()
:
with open('filename.txt', 'r') as handle:
parsed = json.load(handle)
您可以在命令行上执行此操作:
python3 -m json.tool some.json
(正如在问题的评论中已经提到的那样,感谢@Kai Petzke对python3的建议)。
实际上,就命令行上的json处理而言,python并不是我最喜欢的工具。对于简单的漂亮打印是可以的,但是如果你想操纵json,它可能会变得过于复杂。你很快就需要写一个单独的脚本文件,你最终可能会得到一个键是“某个键”(python unicode)的地图,这使得选择字段更加困难,并且不会真正朝着漂亮的打印方向发展。
您还可以使用 jq:
jq . some.json
你得到颜色作为奖励(和更容易的可扩展性)。
附录:关于一方面使用jq处理大型JSON文件,另一方面使用非常大的jq程序的评论中存在一些混淆。为了漂亮地打印由单个大型JSON实体组成的文件,实际限制是RAM。为了漂亮地打印一个由单个真实世界数据数组组成的2GB文件,漂亮打印所需的“最大常驻集大小”为5GB(无论是使用jq 1.5还是1.6)。还要注意,jq 可以在 python 之后使用。pip install jq