解决python中json模块loads出来的结构都是unicode的问题
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                解决python中json模块loads出来的结构都是unicode的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                在使用python的json模塊對json字串反序列化成python對象的時候出現的字符串都是unicode類型,而不是python內置的str類型。在某種使用場景下用戶必須做顯式的轉換才能正常使用,徒增一些麻煩,為解決這一問題封裝下述函數。
def convert(input):
    if isinstance(input, dict):
        return {convert(key): convert(value) for key, value in input.iteritems()}
    elif isinstance(input, list):
        return [convert(element) for element in input]
    elif isinstance(input, unicode):
        return input.encode('utf-8')
    else:
        return input
對于采用python反序列化后的python對象再調用一次convert函數即可,當然也可以再loads的時候指定object_hook即可。
示例如下:
In [38]: data = {'key1': 'data1',
   ....:        'key2': 'data2'}
In [39]: json_str = json.dumps(data)
In [40]: print json_str
{"key2": "data2", "key1": "data1"}
In [41]: print json.loads(json_str)
{u'key2': u'data2', u'key1': u'data1'}
In [42]: print convert(json.loads(json_str))
{'key2': 'data2', 'key1': 'data1'}
In [43]: 
                            總結
以上是生活随笔為你收集整理的解决python中json模块loads出来的结构都是unicode的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Windows平台下NS2网络仿真环境的
- 下一篇: DSO之光度标定
