解決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]: 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM