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

 更新时间:2015年02月08日 10:54:08   投稿:junjie  
这篇文章主要介绍了Python中解析JSON并同时进行自定义编码处理实例,需要的朋友可以参考下

在对文件内容或字符串进行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)

附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.https://docs.python.org/2/library/json.html
2.https://github.com/clowwindy/shadowsocks/blob/master/shadowsocks/utils.py

相关文章

  • python中的sort方法使用详解

    python中的sort方法使用详解

    这篇文章主要介绍了python中的sort方法,需要的朋友可以参考下
    2014-07-07
  • Python 读取某个目录下所有的文件实例

    Python 读取某个目录下所有的文件实例

    今天小编就为大家分享一篇Python 读取某个目录下所有的文件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python基于smtplib实现异步发送邮件服务

    Python基于smtplib实现异步发送邮件服务

    这篇文章主要介绍了Python基于smtplib实现异步发送邮件服务,需要的朋友可以参考下
    2015-05-05
  • Python利用PyAutoGUI轻松搞定图片上传

    Python利用PyAutoGUI轻松搞定图片上传

    PyAutoGUI作为一个GUI操作的神器,我们看到了它的操作都很简单,非常通俗易懂,基本上看到函数就能知道它的功效。本文将用它实现图片上传功能,感兴趣的可以了解一下
    2022-09-09
  • python字典和JSON格式的转换方式

    python字典和JSON格式的转换方式

    这篇文章主要介绍了python字典和JSON格式的转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • python中的os.path.join使用方法详解

    python中的os.path.join使用方法详解

    这篇文章主要介绍了python中的os.path.join使用方法详解,os.path.join用于将多个路径拼接为一个完整路径,经常使用,但没了解过细节,直到今天遇到一个令人疑惑的问题,最后发现是os.path.join的问题,借此机会,记录下os.path.join的用法,需要的朋友可以参考下
    2023-11-11
  • 详解Python中的相对导入和绝对导入

    详解Python中的相对导入和绝对导入

    绝对导入是指跳过包内,直接搜索 sys.path ,在sys.path的基础上进行我们的模块搜索。相对导入是指先包内,再包外,再,,,那么下面这篇文章主要给大家介绍了Python中的相对导入和绝对导入,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Python压缩模块zipfile实现原理及用法解析

    Python压缩模块zipfile实现原理及用法解析

    这篇文章主要介绍了Python压缩模块zipfile实现原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python邮件中附加文字、html、图片、附件实现方法

    python邮件中附加文字、html、图片、附件实现方法

    在本篇文章里小编给大家整理了一篇关于python邮件中附加文字、html、图片、附件实现方法,有兴趣的朋友们跟着学习下。
    2021-01-01
  • pyqt5 实现工具栏文字图片同时显示

    pyqt5 实现工具栏文字图片同时显示

    今天小编就为大家分享一篇pyqt5 实现工具栏文字图片同时显示的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论