Cómo imprimir un archivo JSON en Python
El contenido del archivo JSON podría ser desordenado si lo lees a la cadena o lo load
.
Por ejemplo, en un archivo JSON ,
[{"foo": "Etiam", "bar": ["rhoncus", 0, "1.0"]}]
Si load
y luego 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"]}]
El resultado es bien legible en comparación con el formato estándar que vemos normalmente.
[
{
"foo": "Etiam",
"bar": [
"rhoncus",
0,
"1.0"
]
}
]
Método json.dumps
La función json.dumps()
serializa el obj
dado a un str
con formato JSON.
Necesitamos dar un entero positivo a la palabra clave parámetro indent
en la función json.dumps()
para imprimir el obj
con el nivel de sangría dado. Si ident
se establece en 0, sólo insertará nuevas líneas.
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"]}]
Método pprint
El módulo pprint
da la capacidad de imprimir bastante las estructuras de datos de Python. El módulo pprint.pprint
imprime un objeto Python en un flujo seguido de una nueva línea.
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)
El contenido de los datos de los ficheros JSON se imprimirá de forma aproximada. Y también puedes definir la sangría asignando el parámetro indent
.
pprint.pprint(json_data, indent=2)
La pprint
trata las comillas simples '
y las dobles "
de forma idéntica, pero JSON
sólo usa "
, por lo tanto, el contenido del archivo pprinted
JSON
no puede ser guardado directamente en un archivo.
De lo contrario, el nuevo archivo no será analizado como un formato JSON
válido.
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