Trabajar con datos JSON en Python

JSON (JavaScript Object Notation) es un formato de datos liviano que se utiliza para el intercambio de datos entre un servidor y un cliente. Se utiliza comúnmente en aplicaciones web para enviar y recibir datos. Python proporciona un módulo integrado llamado json que facilita el trabajo con datos JSON. Este artículo lo guiará a través de los conceptos básicos para trabajar con datos JSON en Python, incluida la lectura, escritura y manipulación de objetos JSON.

¿Qué es JSON?

JSON es un formato basado en texto que es fácil de leer y escribir tanto para humanos como para máquinas. Consiste en pares clave-valor, similares a los diccionarios de Python. Un objeto JSON típico tiene este aspecto:

{
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "is_student": false,
    "skills": ["Python", "JavaScript", "SQL"]
}

Importación del módulo JSON

El módulo json está incluido en la biblioteca estándar de Python, por lo que no es necesario instalar nada. Simplemente impórtelo al comienzo de su script:

import json

Lectura de datos JSON

Puede leer datos JSON desde una cadena o un archivo. El método json.loads() se utiliza para analizar datos JSON desde una cadena, mientras que json.load() se utiliza para leer datos JSON desde un archivo.

Lectura de JSON desde una cadena

Para leer JSON desde una cadena, utilice el método json.loads(), que convierte la cadena JSON en un diccionario de Python.

# Example of reading JSON from a string
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'
data = json.loads(json_string)

print(data)
print(data['name'])  # Output: Alice

Lectura de JSON desde un archivo

Para leer datos JSON de un archivo, utilice el método json.load(). Este método lee el contenido de un archivo y lo convierte en un diccionario de Python.

# Example of reading JSON from a file
with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

Cómo escribir datos JSON

Puede escribir datos JSON en una cadena o en un archivo. El método json.dumps() se utiliza para convertir un objeto Python en una cadena JSON, mientras que json.dump() se utiliza para escribir datos JSON en un archivo.

Cómo escribir JSON en una cadena

Para escribir JSON en una cadena, utilice el método json.dumps(), que convierte un diccionario de Python en una cadena JSON.

# Example of writing JSON to a string
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

json_string = json.dumps(data)
print(json_string)

Cómo escribir JSON en un archivo

Para escribir datos JSON en un archivo, utilice el método json.dump(). Este método toma un objeto Python y lo escribe en un archivo en formato JSON.

# Example of writing JSON to a file
data = {
    "name": "Bob",
    "age": 25,
    "city": "Los Angeles"
}

with open('output.json', 'w') as file:
    json.dump(data, file)

Impresión atractiva de datos JSON

El método json.dumps() tiene varios parámetros que permiten formatear datos JSON para facilitar su lectura. El parámetro indent especifica la cantidad de espacios que se deben usar para la sangría, mientras que el parámetro sort_keys ​​ordena las claves en la salida.

# Example of pretty-printing JSON data
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Chicago"
}

json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)

Conversión entre tipos de datos JSON y Python

El módulo json de Python puede manejar distintos tipos de datos y convertirlos entre JSON y Python. A continuación, se incluye una referencia rápida:

  • dict (Python) a object (JSON)
  • lista (Python) a matriz (JSON)
  • str (Python) a string (JSON)
  • int, float (Python) a number (JSON)
  • Verdadero, Falso (Python) a verdadero, falso (JSON)
  • Ninguno (Python) a null (JSON)

Manejo de errores JSON

Al trabajar con JSON, pueden producirse errores debido a un formato incorrecto o a datos inesperados. El módulo json genera excepciones como JSONDecodeError cuando encuentra este tipo de problemas. Utilice los bloques try y except para gestionar estos errores de forma adecuada.

# Handling JSON errors
json_string = '{"name": "Alice", "age": 30, "city": "New York"'  # Missing closing brace

try:
    data = json.loads(json_string)
except json.JSONDecodeError as e:
    print(f"Error decoding JSON: {e}")

Conclusión

Trabajar con datos JSON es una habilidad fundamental para los desarrolladores de Python, especialmente en el desarrollo web y la ciencia de datos. El módulo json proporciona métodos fáciles de usar para leer, escribir y manipular datos JSON. Si domina estas técnicas, podrá manejar de manera eficiente los datos JSON en sus aplicaciones Python.