https://a.storyblok.com/f/270183/1368x665/5a86bfc7c5/25mar_dev-blog_json-python.jpg

Cómo trabajar con JSON en Python: Guía para principiantes

Publicado el March 18, 2025

Tiempo de lectura: 2 minutos

JSON (JavaScript Object Notation) se utiliza habitualmente cuando se trabaja con API para intercambiar datos entre aplicaciones web y servidores. Es ligero, legible y fácil de analizar.

En Python, trabajar con JSON es sencillo, gracias a la función incorporada json incorporado.

¿Listo para trabajar con JSON en Python? ¡Vamos a empezar!

¿Qué es JSON?

JSON es un formato basado en texto que representa datos estructurados mediante pares clave-valor. He aquí un ejemplo sencillo de JSON tomado de la respuesta de una de nuestras API de red:

{
    "phoneNumber": "+99012345678",
    "location": {
        "latitude": 50.735851,
        "longitude": 7.10066,
    },
    "is_active": true
}

JSON admite varios tipos de datos:

  • Cadenas (por ejemplo, "+99012345678")

  • Numbers (por ejemplo, 25, 50,7358)

  • Booleanos (verdadero o falso)

  • Nulo (nulo)

  • Objetos (pares clave-valor, similares a los diccionarios de Python)

  • Matrices (listas de valores, similares a las listas de Python)

Cómo trabajar con JSON en Python

Python proporciona una función json integrado en su biblioteca estándar, que permite a los desarrolladores trabajar con datos JSON. Puedes importarlo usando:

import json

Analizar datos JSON

Los datos JSON suelen convertirse en diccionarios de Python. Para analizar y convertir datos JSON representados como una cadena, utilice json.loads()

json_data = '{"name": "Maria", "age": 25, "city": "Madrid"}' # string
parsed_data = json.loads(json_data) # Python dict

print(parsed_data["name"]) # prints “Maria”

json.loads() será el método que utilizarás para analizar el JSON de las respuestas de la API.

Convertir objetos Python a JSON

Para convertir (o serializar) objetos Python en una cadena con formato JSON, utilice json.dumps()

python_dict = {"name": "John", "city": "London"}
json_string = json.dumps(python_dict)

print(json_string) # prints '{"name": "John", "city": "London"}'

También puede formatear la salida JSON con sangría para facilitar la lectura:

formatted_json = json.dumps(python_dict, indent=4)
print(formatted_json)

Por supuesto, los formatos JSON inválidos lanzarán una excepción. Debemos manejar estos errores usando el manejo de excepciones normal de Python:

try:
    invalid_json = '{"name": "John", "age": 30,}'  # Incorrect JSON
    parsed_data = json.loads(invalid_json)
except json.JSONDecodeError as e:
    print("Error decoding JSON:", e)

Leer y escribir archivos JSON

Para escribir datos JSON en un archivo, utilice json.dump():

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

Para leer datos JSON de un archivo, utilice json.load():

with open("data.json", "r") as file:
    data = json.load(file) # data is a Python dict
    print(data)

Serializar Otros Tipos de Datos Python a JSON

En los ejemplos anteriores, hemos visto cómo serializar diccionarios Python. Sin embargo, Python permite serializar otros tipos de datos en formato JSON:

Las listas se admiten de forma natural en la serialización JSON:

list_data = ["one", "two", "three"]
json_list = json.dumps(list_data)
print(json_list)  #  ["one", "two", "three"]

Las tuplas pueden convertirse en listas JSON:

tuple_data = ("one", "two", "three")
json_tuple = json.dumps(tuple_data)
print(json_tuple)  #  ["one", "two", "three"]

Los conjuntos de Python deben convertirse en listas antes de la serialización:

set_data = {1, 2, 3, 4}
json_set = json.dumps(list(set_data))
print(json_set)  # [1, 2, 3, 4]

Por último, para serializar objetos personalizados, debemos implementar una función codificadora personalizada:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

def person_encoder(obj):
    if isinstance(obj, Person):
        return {"name": obj.name, "age": obj.age}
    raise TypeError("Object of type Person is not JSON serializable")

person = Person("Maria", 30)
json_person = json.dumps(person, default=person_encoder)
print(json_person) # {"name": "Alice", "age": 30}

Conclusión

A diferencia de otros formatos (XML, ¡te estamos mirando!), trabajar con JSON en Python es sencillo y eficiente. No necesitamos dependencias extra ya que la librería estándar de Python incluye la librería json de Python. Dominar JSON te ayudará a mejorar tus integraciones API, especialmente cuando analices las respuestas API.

¿Tienes alguna pregunta o algo que compartir? Únete a la conversación en Slack de la comunidad de Vonagey mantente actualizado con el Boletín para desarrolladoressíguenos en X (antes Twitter)suscríbete a nuestro canal de YouTube para ver tutoriales en video, y sigue la página de página para desarrolladores de Vonage en LinkedInun espacio para que los desarrolladores aprendan y se conecten con la comunidad. Mantente conectado, comparte tu progreso y entérate de las últimas noticias, consejos y eventos para desarrolladores.

Compartir:

https://a.storyblok.com/f/270183/405x400/2b811a162d/alvaro-navarro.jpg
Alvaro NavarroAntiguos alumnos de Vonage

Álvaro es un antiguo miembro del equipo de Vonage. Trabajó como promotor de desarrolladores en Vonage, centrándose en las API de red. Le apasionan la experiencia del desarrollador, las API y el código abierto. Fuera del trabajo, es habitual encontrarlo explorando tiendas de cómics, asistiendo a festivales de ciencia ficción y terror o construyendo cosas con esos famosos bloques de plástico diminutos.