Saltar al contenido principal

Ficheros JSON

Un diccionario en Python y un objeto JSON son estructuras de datos muy similares, ya que ambos permiten almacenar datos en pares clave-valor. Sin embargo, hay algunas diferencias clave que dependen del contexto en el que se usan.

Supongamos el siguiente archivo en formato JSON datos.json:

{
"nombre": "Manuel",
"edad": 35,
"ciudad": "Santiago"
}

Leer archivos JSON

Podemos leer este archivo de la siguiente manera y transformarlo en un dict:

# Importamos la librería json
import json

# Abrimos el archivo en modo lectura
with open('datos.json', 'r') as archivo_json:
# Carga los datos del archivo JSON en un diccionario
datos = json.load(archivo_json)

# Accedemos a los datos cargados
print(datos["nombre"]) # Imprimirá "Manuel"
print(datos["edad"]) # Imprimirá 35
print(datos["ciudad"]) # Imprimirá "Santiago"

Diferencia entre load() y loads()

La diferencia entre json.load() y json.loads() radica en el tipo de entrada que cada uno acepta:

  • json.load(): Se utiliza para cargar datos desde un archivo abierto.
  • json.loads(): Se utiliza para cargar datos desde una cadena.

El ejemplo anterior utilizando la función json.loads():

# Importamos la librería json
import json

# Abrimos el archivo en modo lectura
with open('datos.json', 'r') as archivo_json:
# Leemos el contenido del archivo en una cadena de texto
contenido = archivo_json.read()

# Transformamos la cadena de texto en un diccionario
datos = json.loads(contenido)

# Accedemos a los datos cargados
print(datos["nombre"]) # Imprimirá "Manuel"
print(datos["edad"]) # Imprimirá 35
print(datos["ciudad"]) # Imprimirá "Santiago"

Escribir un archivo JSON

Puedes escribir un archivo JSON en Python utilizando la biblioteca estándar json. Aquí tienes un ejemplo básico de cómo hacerlo:

# Importamos la librería
import json

# Diccionario a escribir en el archivo
datos = {
"nombre": "Manuel",
"edad": 35,
"ciudad": "Santiago"
}

# Abrimos el archivo en modo escritura
with open('datos.json', 'w') as archivo_json:
# Escribimos el diccionario como un JSON en el archivo
json.dump(datos, archivo_json)

Podemos además hacer que cuando se escriba sea más legible el archivo JSON utilizando los siguientes parámetros:

with open('datos.json', 'w') as archivo_json:
# Escribimos el diccionario como un JSON en el archivo
json.dump(datos, archivo_json, indent=4, ensure_ascii=False)

Diferencia entre dump() y dumps()

La diferencia principal entre json.dump() y json.dumps() radica en el tipo de salida que generan:

  • json.dump(): Esta función se utiliza para escribir datos JSON en un archivo abierto en modo escritura.
  • json.dumps(): Esta función se utiliza para convertir un diccionario en una cadena en formato JSON.

El ejemplo anterior utilizando json.dumps():

# Importamos la librería
import json

# Diccionario a escribir en el archivo
datos = {
"nombre": "Manuel",
"edad": 35,
"ciudad": "Santiago"
}

# Transformamos el diccionario en una cadena en formato JSON
dict_str = json.dumps(datos)

# Abrimos el archivo en modo escritura
with open('datos.json', 'w') as archivo_json:
# Escribimos una cadena de texto en un archivo
archivo_json.write(dict_str)