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

Python中深入分析JSON并还要举行自定义编码管理实例,pythonjson

在对文件内容或字符串进行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中应用的_js9905com金沙网站,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.

在对文本内容或字符串实行JSON反种类化(deserialize)时,由于原有内容编码难题,...

本文由js9905com金沙网站-金沙澳门手机版网址发布于计算机,转载请注明出处:Python中解析JSON并同时进行自定义编码处理实例,

您可能还会对下面的文章感兴趣: