Je veux encoder des objets en JSON. Mais, je n'arrive pas à trouver comment faire la sortie sans l'échappement des chaînes.
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()
Le résultat est (le dumps renvoie une représentation de chaîne de caractères, c'est pourquoi les " sont échappés)
{"abc": "{\"name\": \"abc name\"}"}
Je veux quelque chose d'un peu différent. Le résultat attendu est
{"abc": {"name": "abc name"}"}
Mais je ne vois pas comment faire... Un conseil ?
Merci d'avance.
0 votes
Voir stackoverflow.com/a/63718624/1497139 pour une réponse à la question plus générale