麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python中解析JSON并同時進行自定義編碼處理實例

2020-02-23 06:22:49
字體:
來源:轉載
供稿:網友

在對文件內容或字符串進行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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人午夜免费看 | 国产片91 | 欧美乱码精品一区 | 国产羞羞视频免费在线观看 | 九九热在线免费观看视频 | 澳门一级淫片免费视频 | 国内精品久久久久久久星辰影视 | 黑色丝袜美美女被躁视频 | 亚洲欧美日韩免费 | 久久久久久亚洲国产精品 | 免费观看一区二区三区视频 | 国产成人在线综合 | 最新一级毛片 | 亚洲成人免费视频在线 | 日韩激情一区二区三区 | 911精品影院在线观看 | 国产一区二区成人在线 | 欧美18—19sex性护士中国 | 成人在线观看免费视频 | 国产精品久久久久久久久久久久午夜 | 久久精品国产清自在天天线 | 欧美视频在线观看一区 | 91视频站| 成人毛片免费视频 | 日韩中文字幕三区 | 久久久久91视频 | 欧美一级久久 | 成人三级电影网 | 精品久久久久久综合日本 | 2021国产精品| 狠狠干天天操 | 欧美三级欧美成人高清www | 九一免费版在线观看 | 国产一区二区三区四区在线 | 欧美日韩国产成人在线观看 | 国产成年人视频 | 亚州综合图片 | 一本色道久久综合狠狠躁篇适合什么人看 | 国产精品视频成人 | 久久精品久久精品久久精品 | 国产一区二区在线免费播放 |