目次
- 1 1. ¿Qué es JSON?
- 2 2. Método básico para leer archivos JSON en Python
- 3 3. Cómo leer una cadena JSON en Python
- 4 4. Precauciones y manejo de errores al leer archivos JSON
- 5 5. Procesamiento eficiente de datos JSON de gran tamaño
- 6 6. Uso de los datos tras convertir JSON en diccionario de Python
- 7 7. Cómo escribir JSON en Python
1. ¿Qué es JSON?
Descripción general de JSON
JSON (JavaScript Object Notation) es un formato ligero y muy eficiente para el intercambio de datos. Se utiliza principalmente en la comunicación entre aplicaciones web y servidores. Aunque se basa en JavaScript, es compatible con casi todos los lenguajes de programación. En especial, JSON desempeña un papel fundamental en la obtención y envío de datos mediante API.Estructura de JSON
JSON está compuesto por pares de clave y valor, y los datos se encierran entre llaves{}
. Imagina el siguiente ejemplo sencillo:{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Physics", "Chemistry"]
}
Esta estructura puede incluir listas y objetos anidados, lo que lo hace muy flexible.2. Método básico para leer archivos JSON en Python
Introducción a la librería json
de Python
En Python, se puede manipular archivos JSON fácilmente con la librería estándar json
. No requiere instalación adicional y proporciona funciones básicas para leer y escribir archivos desde el inicio.Cómo leer un archivo JSON
Aquí se explica cómo usar la funciónjson.load()
para leer datos desde un archivo. El siguiente ejemplo carga un archivo JSON y lo manipula como un diccionario:import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
3. Cómo leer una cadena JSON en Python
Uso de la función json.loads()
Cuando se recibe un JSON en formato de cadena y se desea convertirlo en un diccionario de Python, se utiliza json.loads()
. Este método es común al procesar respuestas de API:import json
json_string = '{"name": "Alice", "age": 25, "city": "Tokyo"}'
data = json.loads(json_string)
print(data)
De esta forma, los datos JSON en formato de cadena se convierten fácilmente en un diccionario. 
4. Precauciones y manejo de errores al leer archivos JSON
Errores comunes y soluciones
Uno de los errores más frecuentes al leer un archivo JSON es JSONDecodeError, que ocurre cuando el archivo no está en un formato JSON válido. Es importante manejar estas excepciones y revisar los detalles del error.import json
try:
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
except json.JSONDecodeError as e:
print(f"Error al leer JSON: {e}")
Problemas de codificación
Cuando se trabaja con JSON que incluye caracteres en japonés u otros idiomas, es esencial especificarencoding='utf-8'
para evitar problemas de caracteres ilegibles.5. Procesamiento eficiente de datos JSON de gran tamaño
Procesamiento con eficiencia de memoria
Leer un archivo JSON muy grande de una sola vez puede generar falta de memoria. Para evitarlo, se recomienda usar librerías de streaming comoijson
:import ijson
with open('large_file.json', 'r', encoding='utf-8') as f:
for item in ijson.items(f, 'item'):
print(item)
Con ijson
es posible manejar datos extensos de manera más eficiente.6. Uso de los datos tras convertir JSON en diccionario de Python
Operaciones básicas con diccionarios
Al convertir JSON en un diccionario, la manipulación de datos se vuelve muy sencilla. Por ejemplo, se pueden obtener valores de claves específicas o actualizar información:# Ejemplos de manipulación de diccionarios
print(data['name']) # Muestra 'Alice'
data['age'] = 26 # Actualiza el valor
data['email'] = 'alice@example.com' # Agrega una nueva clave y valor
7. Cómo escribir JSON en Python
Escritura en archivos JSON
Para guardar un diccionario en un archivo JSON en Python, se usa la funciónjson.dump()
. Esto permite almacenar los datos actualizados:with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
El parámetro indent=4
organiza la salida de forma legible, mientras que ensure_ascii=False
permite conservar los caracteres en su idioma original.