如何用Python打印JSON文件?
当前回答
使用json.dump()或json.dumps()的indent关键字参数指定要使用的缩进量:
>>> 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)
其他回答
使用json.dump()或json.dumps()的indent关键字参数指定要使用的缩进量:
>>> 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)
您可以在命令行上执行此操作:
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。
为了能够从命令行进行漂亮的打印并能够控制缩进等,您可以设置类似于以下内容的别名:
alias jsonpp="python -c 'import sys, json; print json.dumps(json.load(sys.stdin), sort_keys=True, indent=2)'"
然后以以下方式之一使用别名:
cat myfile.json | jsonpp
jsonpp < myfile.json
使用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)
一个非常简单的方法是使用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