Convertir objeto de clase a JSON en Python

La conversión del objeto de clase a JSON se realiza mediante el paquete json en Python. json.dumps() convierte el objeto Python en una string json. Cada objeto de Python tiene un atributo que se denota por __dict__ y esto almacena los atributos del objeto. 

  1. El objeto se convierte primero al formato de diccionario usando el atributo __dict__.
  2. Este diccionario recién creado se pasa como un parámetro a json.dumps() que luego produce una string JSON.

Sintaxis: json.dumps(Objeto obj)

Parámetro: espera un objeto de diccionario.

Retorno: string json

Seguir el código de python convierte un objeto Student de clase python en JSON.

Python3

# import required packages
import json
  
# custom class
class Student:
    def __init__(self, roll_no, name, batch):
        self.roll_no = roll_no
        self.name = name
        self.batch = batch
  
  
class Car:
    def __init__(self, brand, name, batch):
        self.brand = brand
        self.name = name
        self.batch = batch
  
  
# main function
if __name__ == "__main__":
    
    # create two new student objects
    s1 = Student("85", "Swapnil", "IMT")
    s2 = Student("124", "Akash", "IMT")
  
    # create two new car objects
    c1 = Car("Honda", "city", "2005")
    c2 = Car("Honda", "Amaze", "2011")
  
    # convert to JSON format
    jsonstr1 = json.dumps(s1.__dict__)
    jsonstr2 = json.dumps(s2.__dict__)
    jsonstr3 = json.dumps(c1.__dict__)
    jsonstr4 = json.dumps(c2.__dict__)
  
    # print created JSON objects
    print(jsonstr1)
    print(jsonstr2)
    print(jsonstr3)
    print(jsonstr4)

Producción:

{"roll_no": "85", "name": "Swapnil", "batch": "IMT"}
{"roll_no": "124", "name": "Akash", "batch": "IMT"}
{"brand": "Honda", "name": "city", "batch": "2005"}
{"brand": "Honda", "name": "Amaze", "batch": "2011"}

Publicación traducida automáticamente

Artículo escrito por swapnilbuchke y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *