Impresión bonita JSON usando Python

JSON (Notación de objetos de JavaScript) es un formato de datos basado en texto que es intercambiable con muchos lenguajes de programación. Se utiliza comúnmente para la transmisión de datos entre aplicaciones cliente-servidor. Por lo general, las versiones reducidas del texto JSON se transmiten para ahorrar ancho de banda. Sin embargo, para la depuración y el análisis, se requiere una versión mejorada o una bonita impresión de JSON. Esencialmente, JSON de impresión bonita significa tener sangría adecuada, espacios en blanco y separadores. 

Ejemplo:

Input:
'[ {"studentid": 1, "name": "ABC", "subjects": ["Python", "Data Structures"]}]'
                
Output:

[
   {
       "studentid": 1,
       "name": "ABC",
       "subjects": 
       [
           "Python",
           "Data Structures"
       ]
   }
]

Sintaxis de json.dumps()

Primero, use el método json.loads() para convertir JSON String en objeto Python. Para convertir este objeto en una bonita string JSON, se utiliza el método json.dumps(). A continuación se muestran ejemplos y pasos para comprender mejor estos casos.

Sintaxis: json.dumps(obj, sangría, separador)

Parámetro:

  • objeto:
  • sangría: un nivel de sangría de 0, negativo o «» solo insertará líneas nuevas.
  • separadores:

Bonita string JSON de impresión

Ejemplo 1

Este método tiene la sangría del parámetro para especificar el número de espacios y un parámetro separador para especificar el separador entre clave y valor. De forma predeterminada, el separador es una coma entre pares clave-valor y dos puntos entre clave y valor. Si el parámetro de sangría de json.dumps() es negativo, 0 o una string vacía, no hay sangrías y solo se insertan líneas nuevas. De forma predeterminada, la sangría es Ninguna y los datos se representan en una sola línea.

Python3

# Import required libraries
import json
 
# Initialize JSON data
json_data = '[ {"studentid": 1, "name": "ABC", \
"subjects": ["Python", "Data Structures"]}, \
                {"studentid": 2, "name": "PQR",\
                "subjects": ["Java", "Operating System"]} ]'
 
# Create Python object from JSON string data
obj = json.loads(json_data)
 
# Pretty Print JSON
json_formatted_str = json.dumps(obj, indent=4)
print(json_formatted_str)

Producción:

[
   {
       "studentid": 1,
       "name": "ABC",
       "subjects": [
           "Python",
           "Data Structures"
       ]
   },
   {
       "studentid": 2,
       "name": "PQR",
       "subjects": [
           "Java",
           "Operating System"
       ]
   }
]

Ejemplo 2

Datos JSON bastante impresos en un archivo con sangría = 0 .

Python3

# Import required libraries
import json
 
# Initialize JSON data
json_data = '[ {"studentid": 1, "name": "ABC", \
    "subjects": ["Python", "Data Structures"]},\
    {"studentid": 2, "name": "PQR", \
    "subjects": ["Java", "Operating System"]} ]'
 
# Create Python object from JSON string data
obj = json.loads(json_data)
 
# Pretty Print JSON
json_formatted_str = json.dumps(obj, indent=0)
print(json_formatted_str)

Producción:

[
{
"studentid": 1,
"name": "ABC",
"subjects": [
"Python",
"Data Structures"
]
},
{
"studentid": 2,
"name": "PQR",
"subjects": [
"Java",
"Operating System"
]
}
]

Escribir datos JSON de Pretty Print en un archivo

Para escribir un objeto de Python como datos con formato JSON en un archivo, se utiliza el método json.dump(). Al igual que el método json.dumps(), tiene las sangrías y los parámetros de separación para escribir JSON embellecido.

Python3

# Import required libraries
import json
 
data = [{"studentid": 1, "name": "ABC",
         "subjects": ["Python", "Data Structures"]},
        {"studentid": 2, "name": "PQR",
         "subjects": ["Java", "Operating System"]}]
 
# Write pretty print JSON data to file
with open("filename.json", "w") as write_file:
    json.dump(data, write_file, indent=4)

Producción:

nombre de archivo.json

Lea datos JSON e imprímalos bastante

Ejemplo 1

Para leer JSON desde un archivo o URL, use json.load(). Luego use json.dumps() para convertir el objeto (obtenido al leer el archivo) en una bonita string JSON impresa. 

Python3

# Import required libraries
import json
 
# Read JSON data from file and pretty print it
with open("filename.json", "r") as read_file:
    # Convert JSON file to Python Types
    obj = json.load(read_file)
 
    # Pretty print JSON data
    pretty_json = json.dumps(obj, indent=4)
    print(pretty_json)

Producción:

[
   {
       "studentid": 1,
       "name": "ABC",
       "subjects": [
           "Python",
           "Data Structures"
       ]
   },
   {
       "studentid": 2,
       "name": "PQR",
       "subjects": [
           "Java",
           "Operating System"
       ]
   }
]

Ejemplo 2

Aquí estamos usando el módulo pprint para imprimir bastante JSON para imprimir nuestro formato JSON.

Python3

import json
import pprint
 
with open("test.json", "r") as json_data:
    student = json.load(json_data)
    print(student)
 
    print("\n")
 
# construct PrettyPrinter first
pp = pprint.PrettyPrinter(indent=2, width=30, compact=True)
 
print("Pretty Printing using pprint module")
pp.pprint(student)

Producción:

{'Teacher_id': 1, 'name': 'Suraj', 'Salary': 50000, 'attendance': 80, 
'Branch': ['English', 'Geometry', 'Physics', 'World History'], 'email': 'test@example.com'}


Pretty Printing using pprint module
("{'Teacher_id': 1, 'name': "
 "'Suraj', 'Salary': 50000, "
 "'attendance': 80, "
 "'Branch': ['English', "
 "'Geometry', 'Physics', "
 "'World History'], 'email': "
 "'test@example.com'}")

Pretty-print JSON desde la línea de comando

En este ejemplo, estamos tratando de imprimir datos usando la línea de comando. Para validar e imprimir objetos JSON desde la línea de comandos, Python ofrece el paquete json.tool.

Python3

echo {"studentid": 1, "name": "ABC",
      "subjects": ["Python", "Data Structures"]} | python -m json.tool

Producción:

{
    "studentid": 1,
    "name": "ABC",
    "subjects": [
        "Python",
        "Data Structures"
    ]
}

Publicación traducida automáticamente

Artículo escrito por akshisaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *