Кодирование вложенного объекта Python в JSON

Я хочу кодировать объекты в 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()

Результат (дамп возвращает строковое представление, поэтому экранируются символы ")

{"abc": "{\"name\": \"abc name\"}"}

Я хочу кое-что немного другое. ожидаемый результат

{"abc": {"name": "abc name"}"}

Но я не понимаю, как ... Я не могу понять, как сделать вывод без экранирования строки. import json class Abc: def __init __ (self): self.name = "abc name" def ...

Я хочу кодировать объекты в 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()

Результат (дамп возвращает строковое представление, поэтому экранируются символы ")

{"abc": "{\"name\": \"abc name\"}"}

Я хочу кое-что немного другое. ожидаемый результат

{"abc": {"name": "abc name"}"}

Но я не понимаю, как ... Я не могу понять, как сделать вывод без экранирования строки. import json class Abc: def __init __ (self): self.name = "abc name" def ...

Я хочу кодировать объекты в 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()

Результат (дамп возвращает строковое представление, поэтому экранируются символы ")

{"abc": "{\"name\": \"abc name\"}"}

Я хочу кое-что немного другое. ожидаемый результат

{"abc": {"name": "abc name"}"}

Но я не понимаю, как ... Есть подсказки?

заранее спасибо.

34
задан igaurav 13 October 2014 в 08:30
поделиться