Agregar datos a un archivo JSON usando Python

Mehvish Ashiq 21 junio 2023
  1. Agregar datos a un archivo JSON usando Python
  2. Use un objeto de lista de Python para actualizar datos a un archivo JSON
  3. Use un objeto dict de Python para actualizar datos a un archivo JSON
Agregar datos a un archivo JSON usando Python

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 o list de Python.
  • Agregue ese objeto dict o list.
  • Escriba ese objeto dict o list 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"
}
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Python JSON