Come stampare un file JSON in Python

Jinku Hu 30 gennaio 2023
  1. Metodo json.dumps
  2. Metodo pprint
Come stampare un file JSON in Python

Il contenuto del file JSON potrebbe essere disordinato se lo si legge sulla stringa o lo si load.

Per esempio, in un file JSON ,

[{"foo": "Etiam", "bar": ["rhoncus", 0, "1.0"]}]

Se lo load e poi lo print.

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"]}]

Il risultato è ben leggibile rispetto al formato standard che vediamo normalmente.

[
  {
    "foo": "Etiam",
    "bar": [
      "rhoncus",
      0,
      "1.0"
    ]
  }
]

Metodo json.dumps

La funzione json.dumps() serializza il dato obj ad una str formattata in JSON.

Dobbiamo dare un numero intero positivo al parametro keyword indent nella funzione json.dumps() per stampare il obj con il livello di rientro dato. Se ident è impostato a 0, inserirà solo nuove righe.

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"]}]

Metodo pprint

Il modulo pprint permette di stampare strutture dati Python. Il modulo pprint.pprint stampa un oggetto Python in un flusso seguito da una nuova linea.

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)

Il contenuto dei dati del file JSON sarà stampato in modo grazioso. E si può anche definire il trattino assegnando il parametro indent.

pprint.pprint(json_data, indent=2)
Attenzione

pprint tratta le singole ' e le doppie virgolette " in modo identico, ma JSON utilizza solo " quindi il contenuto del file pprinted JSON non può essere salvato direttamente in un file.

In caso contrario, il nuovo file non sarà analizzato come formato JSON valido.

Autore: 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 Facebook

Articolo correlato - Python JSON