Mysql罕見成績集錦。本站提示廣大學習愛好者:(Mysql罕見成績集錦)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql罕見成績集錦正文
在對文件內容或字符串停止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