之前用nodejs,实现了一个简单的http客户端,服务端基于flask。服务端收到的json数据为unicode格式。不转码,服务端出现各种错误。
网上找了递归实现的方法:现贴出来,共同学习一下:
def byteify(self, obj):
if isinstance(obj, dict):
return {self.byteify(key): self.byteify(value) for (key, value) in obj.iteritems()}
elif isinstance(obj, list):
return [self.byteify(element) for element in obj]
elif isinstance(obj, unicode):
return obj.encode('utf-8')
else:
return obj
由于服务端python版本为2.6.X的linux环境, 无法识别这种python 版本2.7以上才支持的for循环写法,现修改如下:
def byteify(self, obj):
if isinstance(obj, dict):
res = {}
for key, value in obj.iteritems():
res = dict(res, **{self.byteify(key): self.byteify(value)})
return res
elif isinstance(obj, list):
res = []
for i in obj:
res.append(self.byteify(i))
return res
elif isinstance(obj, unicode):
return obj.encode('utf-8')
else:
return obj