如何用Python打印JSON文件?
当前回答
您可以在命令行上执行此操作:
python3 -m json.tool some.json
(正如问题评论中已经提到的,感谢@Kai Petzke提出的蟒蛇3建议)。
实际上,就命令行上的json处理而言,python不是我最喜欢的工具。对于简单漂亮的打印是可以的,但是如果你想操作json,它可能会变得过于复杂。您很快就需要编写一个单独的脚本文件,最终可能会得到键为u“somekey”(python unicode)的映射,这使得选择字段变得更加困难,并不会真正朝着漂亮打印的方向发展。
您也可以使用jq:
jq . some.json
你可以得到颜色作为奖励(而且更容易扩展)。
附录:关于一方面使用jq处理大型JSON文件,另一方面使用非常大的jq程序,评论中存在一些困惑。对于漂亮地打印由单个大型JSON实体组成的文件,实际限制是RAM。对于由单个真实世界数据数组组成的2GB文件的漂亮打印,漂亮打印所需的“最大驻留集大小”为5GB(无论使用jq 1.5还是1.6)。还要注意,在pip安装jq之后,可以在python中使用jq。
其他回答
使用json标准库模块读取数据后,使用pprint标准库模块显示解析的数据。例子:
import json
import pprint
json_data = None
with open('file_name.txt', 'r') as f:
data = f.read()
json_data = json.loads(data)
pprint.pprint(json_data)
输出将如下所示:
{'address': {'city': 'New York',
'postalCode': '10021-3100',
'state': 'NY',
'streetAddress': '21 2nd Street'},
'age': 27,
'children': [],
'firstName': 'John',
'isAlive': True,
'lastName': 'Smith'}
请注意,此输出不是有效的JSON;虽然它以良好的格式显示Python数据结构的内容,但它使用Python语法来实现。特别是,字符串(通常)用单引号括起来,而JSON需要双引号。要将数据重写为JSON文件,请使用pprint.pdf格式:
pretty_print_json = pprint.pformat(json_data).replace("'", '"')
with open('file_name.json', 'w') as f:
f.write(pretty_print_json)
您可以在命令行上执行此操作:
python3 -m json.tool some.json
(正如问题评论中已经提到的,感谢@Kai Petzke提出的蟒蛇3建议)。
实际上,就命令行上的json处理而言,python不是我最喜欢的工具。对于简单漂亮的打印是可以的,但是如果你想操作json,它可能会变得过于复杂。您很快就需要编写一个单独的脚本文件,最终可能会得到键为u“somekey”(python unicode)的映射,这使得选择字段变得更加困难,并不会真正朝着漂亮打印的方向发展。
您也可以使用jq:
jq . some.json
你可以得到颜色作为奖励(而且更容易扩展)。
附录:关于一方面使用jq处理大型JSON文件,另一方面使用非常大的jq程序,评论中存在一些困惑。对于漂亮地打印由单个大型JSON实体组成的文件,实际限制是RAM。对于由单个真实世界数据数组组成的2GB文件的漂亮打印,漂亮打印所需的“最大驻留集大小”为5GB(无论使用jq 1.5还是1.6)。还要注意,在pip安装jq之后,可以在python中使用jq。
我认为最好先解析json,以避免错误:
def format_response(response):
try:
parsed = json.loads(response.text)
except JSONDecodeError:
return response.text
return json.dumps(parsed, ensure_ascii=True, indent=4)
您可以尝试pprintjson。
安装
$ pip3 install pprintjson
用法
使用pprintjson CLI从文件中精确打印JSON。
$ pprintjson "./path/to/file.json"
使用pprintjson CLI从stdin打印JSON。
$ echo '{ "a": 1, "b": "string", "c": true }' | pprintjson
使用pprintjson CLI从字符串中精确打印JSON。
$ pprintjson -c '{ "a": 1, "b": "string", "c": true }'
从缩进为1的字符串中精确打印JSON。
$ pprintjson -c '{ "a": 1, "b": "string", "c": true }' -i 1
从字符串中精确打印JSON并将输出保存到文件output.JSON。
$ pprintjson -c '{ "a": 1, "b": "string", "c": true }' -o ./output.json
输出
一个非常简单的方法是使用rich。使用此方法,您还可以突出显示json
此方法从名为config.json的json文件中读取数据
from rich import print_json
setup_type = open('config.json')
data = json.load(setup_type)
print_json(data=data)
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 查询JSON类型内的数组元素
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if