Python JSON

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):

PythonJSON
dictObject
listArray
tupleArray
strString
intNumber
floatNumber
Truetrue
Falsefalse
Nonenull

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)