如何漂亮地打印 JSON 文件?

新手上路,请多包涵

如何在 Python 中漂亮地打印 JSON 文件?

原文由 Colleen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 543
2 个回答

使用 indent= 参数 json.dump()json.dumps() 指定要缩进多少个空格:

 >>> import json
>>>
>>> your_json = '["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> parsed = json.loads(your_json)
>>> print(json.dumps(parsed, indent=4))
[
    "foo",
    {
        "bar": [
            "baz",
            null,
            1.0,
            2
        ]
    }
]

要解析文件,请使用 json.load()

 with open('filename.txt', 'r') as handle:
    parsed = json.load(handle)

原文由 Blender 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以在命令行上执行此操作:

 python3 -m json.tool some.json

(正如问题的评论中已经提到的,感谢@Kai Petzke 的 python3 建议)。

实际上,就命令行上的 json 处理而言,python 并不是我最喜欢的工具。对于简单的漂亮打印是可以的,但如果你想操作 json,它可能会变得过于复杂。您很快就需要编写一个单独的脚本文件,您最终可能会得到其键为 u”some-key”(python unicode)的地图,这使得选择字段更加困难并且不会真正朝着漂亮的方向发展-印刷。

您还可以使用 jq

 jq . some.json

并且您会获得颜色作为奖励(并且更容易扩展)。

附录:关于一方面使用 jq 处理大型 JSON 文件,另一方面有一个非常大的 jq 程序的评论中存在一些混淆。对于漂亮打印由单个大型 JSON 实体组成的文件,实际限制是 RAM。对于漂亮打印由单个真实世界数据数组组成的 2GB 文件,漂亮打印所需的“最大驻留集大小”为 5GB(无论是使用 jq 1.5 还是 1.6)。另请注意,jq 可以在 pip install jq 之后在 python 中使用。

原文由 Gismo Ranas 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题