我有一个 JSON 文件是一个混乱,我想漂亮 - 在 python 中最简单的方法是什么?我知道 PrettyPrint 有一个 “对象”,我认为它可以是一个文件,但我不知道如何传入文件 - 只是使用文件名不起作用。
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
并且您将颜色作为奖励(并且更容易扩展)。
Pygmentize 是一种杀手级工具。 看到这个。
我将 python json.tool 与 pygmentize 结合起来
echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json
有关 pygmentize 安装说明,请参阅上面的链接。
这个演示如下图所示: