后端开发|Python教程
Python,解析JSON,自定义编码
后端开发-Python教程
在对文件内容或字符串进行JSON反序列化(deserialize)时,由于原始内容编码问题,可能需要对反序列化后的内容进行编码处理(如将unicode对象转换为str)。
商业源码 棋,ubuntu显示显卡参数,把tomcat暴露在互联网,新手买哪种爬虫,PHP期末作业制作一个网站,苏州seo公lzw
在Python中,一种方式是先使用json.load或json.loads反序列化得到dict对象,然后对这个dict对象进行编码处理。
源码怎么加授权,ubuntu如何读取优盘,虚拟机怎么连接tomcat,考研资讯爬虫,学php和app开发,老兵seo优化lzw
但其实在json.load与json.loads中,有可选参数object_hook。通过使用此参数,可以对反序列化得到的dict直接进行处理,并使用处理后新的dict替代原dict返回。
淘宝源码图标,vscode网页浏览,ubuntu中创建文件,tomcat长度,sqlite 页池,什么是虚拟服务器账号,图片剪辑插件js,CS架构前端框架,java爬虫获取动态数据,php串接,如何自学seo优化,asp动态网站源码,ios 获取网页源码下载,手机网站产品展示模板,网站联系我们页面,公司的管理系统,usb通信程序lzw
使用方法为:
复制代码 代码如下:
d = json.loads(json_str, object_hook=_decode_dict)
附Shadowsocks中使用的_decode_dict与_decode_list:
复制代码 代码如下:
def _decode_list(data):
rv = []
for item in data:
if isinstance(item, unicode):
item = item.encode(utf-8)
elif isinstance(item, list):
item = _decode_list(item)
elif isinstance(item, dict):
item = _decode_dict(item)
rv.append(item)
return rv
def _decode_dict(data):
rv = {}
for key, value in data.iteritems():
if isinstance(key, unicode):
key = key.encode(utf-8)
if isinstance(value, unicode):
value = value.encode(utf-8)
elif isinstance(value, list):
value = _decode_list(value)
elif isinstance(value, dict):
value = _decode_dict(value)
rv[key] = value
return rv
参考:
1./2/library/json.html
2./clowwindy/shadowsocks/blob/master/shadowsocks/utils.py