将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__函数不会递归调用?
最佳答案
从这个程序:
class Foo(object):
def __repr__(self):
return "REPR"
def __str__(self):
return "STR"
x = {}
x['client'] = Foo()
print str(x)
print repr(x)
你可以看到dict总是在其成员上调用repr,无论是否在dict上使用了str或repr.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。