欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Python中解析JSON并同时进行自定义编码处理实例

程序员文章站 2022-05-31 12:27:37
...
在对文件内容或字符串进行JSON反序列化(deserialize)时,由于原始内容编码问题,可能需要对反序列化后的内容进行编码处理(如将unicode对象转换为str)。

在Python中,一种方式是先使用json.load或json.loads反序列化得到dict对象,然后对这个dict对象进行编码处理。

但其实在json.load与json.loads中,有可选参数object_hook。通过使用此参数,可以对反序列化得到的dict直接进行处理,并使用处理后新的dict替代原dict返回。

使用方法为:

复制代码 代码如下:

d = json.loads(json_str, object_hook=_decode_dict)

附*中使用的_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.https://docs.python.org/2/library/json.html
2.https://github.com/clowwindy/*/blob/master/*/utils.py

Python中解析JSON并同时进行自定义编码处理实例

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • Python中解析JSON并同时进行自定义编码处理实例
  • 专题推荐

    作者信息
    Python中解析JSON并同时进行自定义编码处理实例

    认证0级讲师

    推荐视频教程
  • Python中解析JSON并同时进行自定义编码处理实例javascript初级视频教程
  • Python中解析JSON并同时进行自定义编码处理实例jquery 基础视频教程
  • 视频教程分类