Agregar datos a un archivo JSON usando Python
- Agregar datos a un archivo JSON usando Python
-
Use un objeto de
lista
de Python para actualizar datos a un archivo JSON -
Use un objeto
dict
de Python para actualizar datos a un archivo JSON
La mayoría de las aplicaciones web y las API de descanso proporcionan a los usuarios datos en formato JSON porque es ampliamente utilizado y fácil de entender en las aplicaciones web. Entonces, si usa Python en aplicaciones web, puede estar interesado en agregar datos a un archivo JSON usando Python.
Este tutorial enseña posibles formas de agregar datos a un archivo JSON usando Python.
Agregar datos a un archivo JSON usando Python
No podemos agregar un archivo JSON directamente usando Python, pero podemos sobrescribirlo. Entonces, ¿cómo agregar datos en un archivo JSON?
Para ello tendremos que seguir los pasos que se indican a continuación:
-
Lea el archivo JSON en un objeto
dict
olist
de Python. -
Agregue ese objeto
dict
olist
. -
Escriba ese objeto
dict
olist
actualizado en el archivo JSON original (aquí, el contenido anterior se sobrescribirá con el contenido actualizado).
Nuestro archivo JSON (data.json
) contiene los datos proporcionados a continuación que usaremos en los próximos ejemplos de código de este artículo.
Contenido del archivo JSON (guardado en el archivo data.json
):
{
"student_details":[
{
"student_first_name": "Mehvish",
"student_last_name": "Ashiq",
"student_email": "mehvish@gmail.com"
},
{
"student_first_name": "Tahir",
"student_last_name": "Raza",
"student_email": "tahir@yahoo.com"
}
]
}
Use un objeto de lista
de Python para actualizar datos a un archivo JSON
Supongamos que queremos agregar al siguiente estudiante en el archivo data.json
:
{
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com"
}
Entonces, ejecutemos el siguiente código para hacerlo.
Código de ejemplo (guardado en demo.py
):
import json
def write_json(new_student, filename="./data.json"):
with open(filename, "r+") as file:
file_content = json.load(file)
file_content["student_details"].append(new_student)
file.seek(0)
json.dump(file_content, file, indent=4)
new_student = {
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com",
}
write_json(new_student)
Primero, importamos el módulo json
para trabajar con archivos JSON. A continuación, escribimos una función write_json()
, que toma dos parámetros: el nuevo_estudiante
que tiene los detalles del alumno que queremos agregar y el nombre del archivo
(también podemos especificar la ruta del archivo aquí).
Dentro de esta función, usamos el método open()
para abrir el archivo especificado en modo lectura. Luego, usamos json.loads()
para analizar la cadena JSON (cargar los datos existentes) en el file_content
.
A continuación, usamos el objeto de lista para usar .append()
para unir el contenido_archivo
con el nuevo_estudiante
dentro de detalles_estudiante
. El file.seek(0)
establece la posición actual del archivo en el desplazamiento.
Finalmente, usamos .dump()
para volver a convertirlo a JSON.
Ahora, ejecutamos el código anterior usando python demo.py
de la siguiente manera:
PS E:\Code> python demo.py
Nuestro archivo data.json
se sobrescribirá con la ejecución exitosa del programa anterior. Consulte el archivo data.json
actualizado a continuación.
SALIDA (contenido del archivo de data.json
):
{
"student_details": [
{
"student_first_name": "Mehvish",
"student_last_name": "Ashiq",
"student_email": "mehvish@gmail.com"
},
{
"student_first_name": "Tahir",
"student_last_name": "Raza",
"student_email": "tahir@yahoo.com"
},
{
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com"
}
]
}
Use un objeto dict
de Python para actualizar datos a un archivo JSON
Ahora, supongamos que queremos agregar una propiedad más, "sección": "A"
para todos los estudiantes. Podemos hacer eso de la siguiente manera:
Código de ejemplo (guardado en el archivo demo.py
):
import json
def write_json(section, filename="./data.json"):
with open(filename, "r+") as file:
file_content = json.load(file)
file_content.update(section)
file.seek(0)
json.dump(file_content, file, indent=4)
section = {"section": "A"}
write_json(section)
Este ejemplo es similar al último, que usaba el objeto lista
para actualizar datos a un archivo JSON, excepto por una diferencia. Aquí, usamos un objeto dict
para usar el método .update()
que actualiza un dict
(diccionario) con elementos de otro objeto dict
o de un par clave-valor iterable.
Tendremos el siguiente contenido en el archivo data.json
después de ejecutar esta programación usando el comando python demo.py
.
SALIDA (guardada en el archivo data.json
):
{
"student_details": [
{
"student_first_name": "Mehvish",
"student_last_name": "Ashiq",
"student_email": "mehvish@gmail.com"
},
{
"student_first_name": "Tahir",
"student_last_name": "Raza",
"student_email": "tahir@yahoo.com"
},
{
"student_first_name": "Aftab",
"student_last_name": "Raza",
"student_email": "Aftab@gmail.com"
}
],
"section": "A"
}