En Python, JSON (JavaScript Object Notation) es un formato de intercambio de datos ligero y fácil de leer y escribir. Se utiliza ampliamente para transmitir y almacenar datos estructurados entre diferentes sistemas. Python proporciona funciones integradas para trabajar con datos JSON, lo que facilita la serialización (convertir objetos Python a JSON) y la deserialización (convertir JSON a objetos Python).
Convertir Python a JSON (Serialización)
Aquí podrás ver algunos ejemplos para convertir objetos Python a JSON, a lo que llamamos serialización.
import json # Crear un diccionario Python data = { "nombre": "Juan", "edad": 30, "ciudad": "Madrid" } # Convertir el diccionario a una cadena JSON json_data = json.dumps(data) print(json_data)
Salida:
{nombre: "Juan", edad: 30, ciudad: "Madrid"}
Ejemplo para convertir Python a JSON
convierte el diccionario de Python x
en un objeto JSON utilizando la función json.dumps(). El resultado es un string que representa el objeto JSON.
import json # a Python object (dict): x = { "País":"España", "Comunidad":"Madrid", "Ciudad":"Alcobendas" } # convertir a JSON: y = json.dumps(x) #El resultado es un string de JSON: print(y)
Salida:
{país: "España", comunidad: Madrid, ciudad: "Alcobendas"}
El diccionario Python x
contiene tres claves ("País", "Comunidad" y "Ciudad") con sus respectivos valores ("España", "Madrid" y "Alcobendas"). Al utilizar json.dumps(x), se convierte el diccionario en una cadena de texto JSON que representa la misma estructura y valores del diccionario original. Luego, se imprime el resultado, que es el objeto JSON en formato de cadena.
Objetos de Python que se pueden convertir en cadenas JSON
Estos son los tipos de objetos de Python que se pueden convertir en cadenas JSON:
- dict
- list
- tuple
- string
- int
- float
- True
- False
- None
Cuando se convierte de Python a JSON, los objetos de Python se convierten al equivalente de JSON (JavaScript):
Python | JSON |
---|---|
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
Ejemplo para convertir objetos de python en cadenas JSON
Convierte diferentes objetos de Python en cadenas JSON utilizando la función json.dumps() y luego imprime las cadenas JSON resultantes. Aquí está el resultado de cada conversión:
import json # Diccionario de Python print(json.dumps({"País":"España", "Comunidad":"Madrid",})) # Lista de Python print(json.dumps(["Aranjuez","Las Rozas"])) # Tupla de Python print(json.dumps(("Aranjuez","Las Rozas"))) # Cadena de Python print(json.dumps("Catalina")) # Entero de Python print(json.dumps(32)) # Número decimal de Python print(json.dumps(32.10)) # Booleano True de Python print(json.dumps(True)) # Booleano False de Python print(json.dumps(False)) # Valor nulo de Python (None) print(json.dumps(None))
Salida:
{"País": "España", "Comunidad": "Madrid"} ["Aranjuez", "Las Rozas"] ["Aranjuez", "Las Rozas"] "Catalina" 32 32.1 true false null
Cada objeto de Python se convierte correctamente en su representación correspondiente de cadena JSON.
Formato del resultado
El ejemplo anterior imprime una cadena JSON, pero no es muy fácil de leer, sin sangrías ni saltos de línea. El método json.dumps() tiene parámetros para facilitar la lectura del resultado:
- Use el parámetro de sangría para definir los números de sangría:
json.dumps(x, indent=3)
También puede definir los separadores, el valor predeterminado es (",", ":"), lo que significa usar una coma y un espacio para separar cada objeto, y dos puntos y un espacio para separar las claves de los valores:
- Utilice el parámetro separadores cambiar el separador predeterminado:
json.dumps(x, indent=3, separators=(". ", " = "))
Ordenar el resultado
El método json.dumps() tiene parámetros para ordenar las claves en el resultado:
- Use el parámetro sort_keys para especificar si el resultado debe ordenarse o no:
json.dumps(x, indent=3, sort_keys=True)
Convertir JSON a Python (Deserialización)
Aquí podrás ver algunos ejemplos para convertir de JSON a objetos Python, lo que llamamos deserialización.
import json # Cadena JSON json_data = '{"nombre": "Ana", "edad": 25, "ciudad": "Barcelona"}' # Convertir la cadena JSON a un diccionario Python data = json.loads(json_data) print(data)
Salida:
{'nombre': 'Ana', 'edad': 25, 'ciudad': 'Barcelona'}
Ejemplo para convertir de JSON a python
El ejemplo convierte el objeto JSON en una estructura de datos de Python (un diccionario) utilizando la función json.loads(). Luego, imprime el valor correspondiente a la clave "Ciudad" del diccionario resultante.
import json # Código JSON: x = '{ "País":"España", "Comunidad":"Madrid", "Ciudad":"Alcobendas"}' # parse x: y = json.loads(x) # El resultado es un diccionario de python: print(y["Ciudad"])
El resultado del código será: Alcobendas
En este caso, el valor asociado a la clave "Ciudad" en el objeto JSON es "Alcobendas", y al utilizar json.loads(x), se convierte en un diccionario de Python que tiene la misma estructura y valores que el objeto JSON original. Luego, se accede al valor de la clave "Ciudad" del diccionario y
e imprime "Alcobendas" como resultado.
Leer datos JSON desde un archivo de python
Supongamos que tenemos un archivo llamado "datos.json" con el siguiente contenido:
{"nombre": "Carlos", "edad": "28", "ciudad": "Valencia"}
Podemos leer el contenido del archivo y cargarlo como un diccionario Python:
import json # Leer el contenido del archivo with open('datos jason', 'r') as file: json_data = file.read() # Convertir la cadena JSON a un diccionario Python data = json.loads(json_data) print(data)
Salida
{'nombre': 'Carlos', 'edad': 28, 'ciudad': 'Valencia'}
Escribir datos JSON en un archivo de python
En el siguiente ejemplo, podrás ver como escribir datos JSON en un archivo:
import json # Datos como un diccionario Python data = { "nombre": "Laura", "edad": 35, "ciudad": "Sevilla" } # Convertir el diccionario a una cadena JSON json_data = json.dumps(data) # Escribir la cadena JSON en un archivo with open('datos.json', 'w') as file: file.write(json_data)
Trabajar con JSON en Python es muy sencillo gracias a las funciones integradas que proporciona el módulo json. Permite la transferencia de datos estructurados entre aplicaciones y sistemas de manera eficiente y fácil de interpretar tanto para humanos como para máquinas.
Formato del resultado
Cuando se pinta una cadena JSON, a veces no son fáciles de leer, sin sangrías ni saltos de línea. El método json.dumps() tiene parámetros para facilitar la lectura del resultado:
Ejemplo
Use el parámetro de sangría para definir los números de sangría:
json.dumps(x, indent=3)
También puede definir los separadores, el valor predeterminado es (",", ":"), lo que significa usar una coma y un espacio para separar cada objeto, y dos puntos y un espacio para separar las claves de los valores:
Ejemplo
Utilice el parámetro separadores cambiar el separador predeterminado:
json.dumps(x, indent=3, separators=(". ", " = "))
Ordenar el resultado
El método json.dumps() tiene parámetros para ordenar las claves en el resultado:
Ejemplo
Use el parámetro sort_keys para especificar si el resultado debe ordenarse o no:
json.dumps(x, indent=3, sort_keys=True)