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)