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

Jinku Hu 30 Январь 2023 18 Апрель 2020
  1. json.dumps Метод
  2. Метод pprint
Как красиво распечатать 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.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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