Ir al contenido

Ejemplos de Python para leer y escribir archivos JSON para codificar y decodificar

JSON significa JavaScript Object Notation, que es un formato para estructurar datos que es muy similar al concepto de mapas en la programación de computadoras. Los mapas constan de claves y valores correspondientes. Una clave debe ser única dentro de un mapa.

JSON es un formato ligero para representar datos como texto en un archivo, cuya sintaxis se toma prestada de la sintaxis utilizada para crear objetos JavaScript. Los datos enormes se convierten a formato JSON para un fácil procesamiento en varios lenguajes de programación y transferencia a otros nodos. Es el formato más utilizado para solicitudes y respuestas al trabajar con llamadas a la API.

Tipos de datos aceptados en formato JSON

Las claves JSON deben ser cadenas. La mayoría de los lenguajes convierten implícitamente cualquier otro tipo de datos en cadenas. Los valores JSON pueden ser de cadena, booleanos, enteros, flotantes, otro objeto JSON o matriz JSON.

El siguiente es un ejemplo de un archivo JSON válido (data.json)

{
  "nombre": "Carlos",
  "edad": 21,
  "direccion": {
    "calle": "Avenida Quinta 1234",
    "ciudad": "Río Cuarto",
    "codigo_postal": 5800
  },
  "casado": falso
}

Aquí, el valor de la clave “dirección” es otro JSON. La clave “casado” tiene un valor de tipo booleano.

Tenga en cuenta que JSON no admite comentarios. Todos los fragmentos de código que se proporcionan aquí también son compatibles con Python 3.

El tipo de datos en Python más cercano a JSON es el diccionario. Python admite interconversiones de diccionario, JSON y cadenas mediante un módulo llamado json, una biblioteca de Python incorporada.

Lectura de archivos JSON

Los archivos JSON suelen tener la extensión .json. Sin embargo, Python admite el análisis de cualquier extensión de archivo hasta que contenga un JSON válido. Para leer un archivo json y completar datos en el diccionario, se usa json.load (). Esta función toma el objeto de archivo como parámetro. A continuación se muestra un ejemplo que ilustra el uso de json.load ()

Fragmento de código de ejemplo:

import json

with open("data.json") as f:
    p = json.load(f)
    print(p, type(p))
    print(p["nombre"], "es", "casado" if p["casado"] else "soltero")

Aquí f es el objeto de archivo. json.load () devuelve un diccionario.

El fragmento de código anterior usa el formato python if else .

Lectura de cadenas o matrices de bytes en el diccionario

El módulo json permite al usuario analizar json en forma de cadenas, bytes o matriz de bytes en el diccionario. 

Esto se hace usando la función json.loads (). Tenga en cuenta la similitud en el nombre de la función con la función anterior descrita. load() espera un objeto de archivo como parámetro, mientras que loads() espera una cadena como parámetro. El primero lee el archivo e implícitamente llama al segundo, es decir, loads().

Fragmento de código de ejemplo:

import json

with open("data.json") as f:
    file_data = f.read()
p = json.loads(file_data)
print(p, type(p))
print(p["nombre"], "es", "casado" if p["casado"] else "soltero")

Escribir diccionario en un archivo JSON

Solo se pueden escribir cadenas, matrices de bytes o bytes en un archivo. Por lo tanto, el diccionario debe convertirse a una cadena con formato JSON para poder escribir en un archivo json. Esto se hace usando la función json.dump(). Esta función toma el diccionario y el objeto de archivo como parámetros. No devuelve nada. A continuación se muestra una ilustración de lo mismo.

Fragmento de código de ejemplo:

import json 

json_dict = { 
    "nombre": "Marta", 
    "edad": 23, 
    "direccion": { 
        "calle": "San Juan 234", 
        "ciudad": "Buenos Aires", 
        "codigo_postal": 10001 
    }, 
    "casado": Falso 
} 

print("Type of json_dict:", type(json_dict))

with open("data.json", "w") as f:
    json.dump(json_dict, f, indent=4)

Tenga en cuenta que el archivo json está formateado con tabulación como 4 espacios. En efecto, esto se debe al parámetro “sangría” en la función json.dump ().

Escritura de una cadena con formato JSON en un archivo

En el ejemplo anterior, el análisis de diccionario a cadena y la escritura en el archivo se realiza mediante una función, en una declaración. Aquí, ese paso se divide en dos pasos: el diccionario se convierte primero en una cadena, se guarda en una variable y luego se escribe en el archivo.

Fragmento de código de Python de ejemplo:

import json

json_dict = { 
    "nombre": "Marta", 
    "edad": 23, 
    "direccion": { 
        "calle": "San Juan 234", 
        "ciudad": "Buenos Aires", 
        "codigo_postal": 10001 
    }, 
    "casado": Falso 
} 


print("Type of json_dict:", type(json_dict))

with open("data.json", "w") as f:
    v = json.dumps(json_dict)
    print("v has value", v, "and is of type", type(v))
    f.write(v)

Tenga en cuenta que el archivo data.json no está formateado. Esto se debe a que el parámetro “sangría” se ha omitido de la función json.dumps ().

Para conocer las características extendidas del módulo json, consulte la documentación de Python JSON .

Compartir:
Etiquetas:

Deja un comentario

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