Как красиво распечатать JSON-файл на Python

Содержимое JSON-файла может быть грязным, если вы прочитаете его до строки или загрузите
его.
Например, в одном JSON-файле ,
[{"foo": "Etiam", "bar": ["rhoncus", 0, "1.0"]}]
Если вы загрузите
и затем распечатаете
это.
import json
with open(r'C:\test\test.json', 'r') as f:
json_data = json.load(f)
print(json_data)
[{'foo': 'Etiam', 'bar': ['rhoncus', 0, '1.0']}]
Результат хорошо читается по сравнению с форматом стандарт, который мы обычно видим.
[
{
"foo": "Etiam",
"bar": [
"rhoncus",
0,
"1.0"
]
}
]
json.dumps
Метод
Функция json.dumps()
сериализует данную obj
в JSON-формате str
.
Нам нужно дать положительное целое число параметру ключевого слова indent
в функции json.dumps()
, чтобы красиво распечатать obj
с заданным уровнем отступов. Если ident
установлен в 0, то он будет вставлять только новые строки.
import json
with open(r'C:\test\test.json', 'r') as f:
json_data = json.load(f)
print(json.dumps(json_data, indent=2))
[
{
"foo": "Etiam",
"bar": [
"rhoncus",
0,
"1.0"
]
}
]
Метод pprint
Модуль pprint
предоставляет возможность красивой печати структур данных Python. Модуль pprint.pprint
красиво печатает объект Python в поток, за которым следует новая строка.
import json
import pprint
with open(r'C:\test\test.json', 'r') as f:
json_data = f.read()
json_data = json.loads(json_data)
pprint.pprint(json_data)
Содержимое данных JSON файла будет красиво напечатано. И вы также можете определить отступ, присвоив параметру indent
.
pprint.pprint(json_data, indent=2)
pprint
относится к одиночным '
и двойным кавычкам "
одинаково, но JSON
использует только "
, поэтому pprint
содержимое файла JSON
не может быть сохранено непосредственно в файле.
В противном случае, новый файл не будет разобран как действительный формат JSON
.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn