Python2 JSON.load成Unicode的坑

我是接口調用方,今天在聯調的時候,接口方的同窗問我傳過來的json是神馬玩意,怎麼每一個item前還帶個u的。
我看了一眼,我靠,還真是帶個u的,本身調試的時候楞是沒發現。也怪本身之前沒怎麼遇到過Python的編碼坑,此次從新用起Python2來,一不當心就踩進坑了。
一通debug發現是Python自帶的Json庫會把json文件load成Unicode對象。若是想要變成str對象的話,就要本身去encode。
祭出so大法...#請叫我so搬運工json

def byteify(input):
    if isinstance(input, dict):
        return {byteify(key):byteify(value) for key,value in input.iteritems()}
    elif isinstance(input, list):
        return [byteify(element) for element in input]
    elif isinstance(input, unicode):
        return input.encode('utf-8')
    else:
        return input

這個函數遞歸的把list和dict裏的Unicode對象encode成str。
固然,我不以爲這是the right way。使用yaml裏的json來代替官方自帶的json可能更好。函數

相關文章
相關標籤/搜索