English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Formato JSON en Python

JSON (Java Script Object Notation) es un formato de intercambio de datos ligero y reconocido. Usando la técnica de formateo JSON en Python, podemos convertir cadenas de JSON en objetos Python, y también objetos Python en cadenas de JSON.

Para usar estas funciones, necesitamos usar el módulo json de Python. El módulo json se adjunta al módulo estándar de Python. Por lo tanto, primero debemos importarlo.

import json

Convertir objetos Python en cadenas de JSON

En el módulo json, hay algunos métodos, como dump() y dumps(), que pueden convertir objetos Python en cadenas de JSON. El método dump() tiene dos parámetros, el primero es el objeto y el segundo es el objeto de archivo. Este método convierte el objeto en formato JSONflujosecuencializar a un objeto de archivo. Del mismo modo, el método dumps() solo acepta un parámetro. El parámetro es el objeto. Convierte el objeto en JSONCadena.

Código de ejemplo

import json
from io import StringIO
str_io_obj = StringIO()
#Usar JSON Dump para hacer StringIO
json.dump(["India", "Australia", "Brazil"], str_io_obj)
print('Objecto StringIO valor: ') + str(str_io_obj.getvalue())
my_json = {
   "name" : "Kalyan",
   "age" : 25,
   "city" : "Delhi"
}
print(json.dumps(my_json, indent=4))

Resultado de salida

Objecto StringIO valor: ["India", "Australia", "Brazil"] {
   "name": "Kalyan",
   "age": 25,
   "city": "Delhi"
}

Convertir una cadena de JSON en un objeto Python

En este caso, deserializaremos una cadena de JSON. Hay dos métodos diferentes. Son load() y load(). Ambos métodos toman como parámetro un archivo JSON. load() convierte datos de un objeto de archivo en un objeto Python, mientras que load() convierte datos de tipo cadena.

Código de ejemplo

import json
from io import StringIO
str_io_obj = StringIO('["xyz", "abc", "xyz", "pqr"]')
#Cargar desde StringIO
print('Cargar: ' + str(json.load(str_io_obj)))
print('Cadena a Json: ' + str(json.loads('{"xyz" : 1, "abc" : 2, "xyz" : 3, "pqr" : 4}

Resultado de salida

Cargar: ['xyz', 'abc', 'xyz', 'pqr']
Cadena a Json: {'xyz': 3, 'abc': 2, 'pqr': 4}

Clases JSONEncoder y JSONDecoder en Python

La clase JSONEncoder se utiliza para convertir objetos Python a formato JSON. En este ejemplo, veremos cómo se utiliza JSONEncoder para convertir objetos complejos a objetos de tipo JSON.

Código de ejemplo

import json
class Comp_Encoder(json.JSONEncoder):
   def default(self, comp_obj):
      if isinstance(comp_obj, complex):
      return [comp_obj.real, comp_obj.imag]
      return json.JSONEncoder.default(self, comp_obj)
      print(json.dumps(5+8j, cls=Comp_Encoder))

Resultado de salida

[5.0, 8.0]

La clase JSONDecoder realiza la operación inversa.

Código de ejemplo

import json
my_str = '{"Asim" : 25, "Priyesh" : 23, "Asim" : "28"'
#Decodificar JSON utilizando el JSONDecoder
print(json.JSONDecoder().decode(my_str))
print(json.JSONDecoder().raw_decode(my_str))

Resultado de salida

{'Asim': '28','Priyesh': 23}
({'Asim': '28','Priyesh': 23}, 44)