Módulo JSON de Python
JSON significa JavaScript Object Notation y es un formato ligero para almacenar y transportar datos. JSON se utiliza a menudo cuando los datos se envían desde un servidor a una página web.
Python tiene el módulo incorporado json, que nos permite trabajar con datos JSON.
import json
Tipos de Datos JSON
Un objeto JSON es similar a un diccionario de Python, pero tiene las siguientes diferencias:
- Las claves JSON son siempre cadenas (string).
- Las cadenas siempre están encerradas entre comillas dobles.
- Un booleano JSON comienza con letras minúsculas.
nulles el equivalente JSON deNonede Python.
Los tipos de datos que soporta JSON son:
- String (Cadena)
- Number (Número)
- boolean (Booleano)
- null
- Object (Objeto)
- Array (Arreglo)
Ejemplo:
{
"name": "Charles",
"age": 33,
"has_hair": false,
"hobbies": ["photography", "running"],
"appearance": {
"eyes": "brown",
"hair_color": null
}
}
Método JSON loads()
Con el método json.loads, puedes analizar un objeto JSON y transformarlo en un diccionario de Python:
import json
# Cadena JSON para analizar
json_person = '{"name": "Charles", "age": 33, "has_hair": false, "hobbies": ["photography", "running"]}'
# Analizar cadena JSON a diccionario de Python
python_person = json.loads(json_person)
python_person
{'name': 'Charles', 'age': 33, 'has_hair': False, 'hobbies': ['photography', 'running']}
type(python_person)
<class 'dict'>
# Acceder al valor del diccionario usando el método get
python_person.get("name")
'Charles'
Método JSON dumps()
A la inversa. El método dumps() transforma un objeto de Python a una cadena JSON:
import json
# Diccionario de Python para convertir
python_person = {'name': 'Charles', 'age': 33, 'has_hair': False, 'hobbies': ['photography', 'running']}
# Convertir objeto de Python a cadena JSON
json_person = json.dumps(python_person)
json_person
'{"name": "Charles", "age": 33, "has_hair": false, "hobbies": ["photography", "running"]}'
type(json_person)
<class 'str'>
Lectura y Escritura de Archivos JSON
Lectura de un Archivo JSON
import json
# Leer archivo JSON
with open("filename.json", "r") as f:
json_content = json.loads(f.read())
# Nota: Esta línea parece redundante - json_content ya está analizado
json.loads(json_content)
{'name': 'Charles', 'age': 33, 'has_hair': False}
Escritura de un Archivo JSON
import json
person = {'name': 'Charles', 'age': 33}
# Escribir diccionario de Python a archivo JSON
with open("filename.json", "w") as f:
f.write(json.dumps(person))