将 dict 转换为 JSON 对象时遇到一些麻烦。我有这堂课:
class ServerResponse(object):
status = None
code = None
message = None
data = None
OK_STATUS = True
ERROR_STATUS = False
OK_CODE = 200
def __init__(self, status=OK_STATUS, code=OK_CODE, message=None, data=None, *args, **kwargs):
self.status = status
self.code = code
self.message = message
self.data = data
def to_dict(self):
fields = {
"status": self.status,
"code": self.code,
"message": self.message,
"data": str(self.data),
}
return fields
def to_json(self):
return json.dumps(self.to_dict())
def __str__(self):
return self.to_json()
我使用这个类来生成服务器答案。
from server_response import ServerResponse as Response
...
return_data = {}
for (name, content) in result.items():
if not previous_hashes or client.is_data_change(previous_hashes[name], data['hash']):
return_data[name] = Response(data=content)
else:
return_data[name] = Response(code=201, message="Data has not changed")
response = Response(data=return_data)
...
self.write(str(response))
作为来自服务器的回答,我得到了下一个 JSON
{u'status': True, u'message': None, u'code': 200, u'data': u"{'client': <server_response.ServerResponse object at 0x14e9710>, 'service': <server_response.ServerResponse object at 0x14e90d0>}"}
为什么__str__
函数不递归调用?