Quiero codificar objetos en JSON. Pero no puedo entender cómo hacer que la salida escape sin la cadena.Codificación del objeto python anidado en JSON
import json
class Abc:
def __init__(self):
self.name="abc name"
def toJSON(self):
return json.dumps(self.__dict__, cls=ComplexEncoder)
class Doc:
def __init__(self):
self.abc=Abc()
def toJSON(self):
return json.dumps(self.__dict__, cls=ComplexEncoder)
class ComplexEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Abc) or isinstance(obj, Doc):
return obj.toJSON()
else:
return json.JSONEncoder.default(self, obj)
doc=Doc()
print doc.toJSON()
El resultado es (los vertederos devuelve una representación de cadena, por eso el "se escaparon)
{"abc": "{\"name\": \"abc name\"}"}
quiero algo un poco diferente. El resultado esperado es
{"abc": {"name": "abc name"}"}
Pero no veo cómo ... ¿Alguna pista?
gracias i n avance.
Esto fue fantástico y me permitió formar parte de una clase y manejar atributos como datetime de manera diferente. Además, las clases heredadas pueden llamar a la súper definición y aplicar su propio procesamiento a ciertos atributos. –