欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中解析JSON并同時進(jìn)行自定義編碼處理實例

 更新時間:2015年02月08日 10:54:08   投稿:junjie  
這篇文章主要介紹了Python中解析JSON并同時進(jìn)行自定義編碼處理實例,需要的朋友可以參考下

在對文件內(nèi)容或字符串進(jìn)行JSON反序列化(deserialize)時,由于原始內(nèi)容編碼問題,可能需要對反序列化后的內(nèi)容進(jìn)行編碼處理(如將unicode對象轉(zhuǎn)換為str)。

在Python中,一種方式是先使用json.load或json.loads反序列化得到dict對象,然后對這個dict對象進(jìn)行編碼處理。

但其實在json.load與json.loads中,有可選參數(shù)object_hook。通過使用此參數(shù),可以對反序列化得到的dict直接進(jìn)行處理,并使用處理后新的dict替代原dict返回。

使用方法為:

復(fù)制代碼 代碼如下:

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

附Shadowsocks中使用的_decode_dict與_decode_list:

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • python 人工智能算法之隨機(jī)森林流程詳解

    python 人工智能算法之隨機(jī)森林流程詳解

    這篇文章主要為大家介紹了python 人工智能算法之隨機(jī)森林流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python實現(xiàn)圖片上添加圖片

    python實現(xiàn)圖片上添加圖片

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)圖片上添加圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python實現(xiàn)識別手寫數(shù)字 python圖像識別算法

    python實現(xiàn)識別手寫數(shù)字 python圖像識別算法

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)識別手寫數(shù)字,python圖像識別算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 詳解如何用django實現(xiàn)redirect的幾種方法總結(jié)

    詳解如何用django實現(xiàn)redirect的幾種方法總結(jié)

    這篇文章主要介紹了如何用django實現(xiàn)redirect的幾種方法總結(jié),詳細(xì)的介紹3種實現(xiàn)方式,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Python2.7簡單連接與操作MySQL的方法

    Python2.7簡單連接與操作MySQL的方法

    這篇文章主要介紹了Python2.7簡單連接與操作MySQL的方法,涉及Python使用MySQLdb模塊操作MySQL連接及命令運(yùn)行的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • windows下 兼容Python2和Python3的解決方法

    windows下 兼容Python2和Python3的解決方法

    這篇文章主要介紹了windows下 兼容Python2和Python3的解決方法,需要的朋友可以參考下
    2018-12-12
  • python如何進(jìn)行基準(zhǔn)測試

    python如何進(jìn)行基準(zhǔn)測試

    這篇文章主要介紹了python如何進(jìn)行基準(zhǔn)測試,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python使用Pycharm必備插件推薦(非常好用!)

    Python使用Pycharm必備插件推薦(非常好用!)

    首先我們要知道pycharm是一款非常強(qiáng)大的python集成開發(fā)環(huán)境,帶有一整套python開發(fā)工具,這篇文章主要給大家介紹了關(guān)于Python使用Pycharm必備插件推薦的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • numpy返回array中元素的index方法

    numpy返回array中元素的index方法

    今天小編就為大家分享一篇numpy返回array中元素的index方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • numpy 實現(xiàn)返回指定行的指定元素的位置索引

    numpy 實現(xiàn)返回指定行的指定元素的位置索引

    這篇文章主要介紹了numpy 實現(xiàn)返回指定行的指定元素的位置索引操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論