解决python中json模块loads出来的结构都是unicode的问题
2013-07-24 10:03
821 查看
在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型。在某种使用场景下用户必须做显式的转换才能正常使用,徒增一些麻烦,为解决这一问题封装下述函数。
对于采用python反序列化后的python对象再调用一次convert函数即可,当然也可以再loads的时候指定object_hook即可。
示例如下:
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 load出来编码为unicode的问题的解决
- 解决python3.6下scrapy中xpath.extract()匹配出来的内容转成json与.csv文件没有编码(unicode)的问题
- 关于python中json load出来编码为unicode的问题的解决
- ESL python调用C模块时传递unicode字符串报错问题解决
- python2.4升级到2.7后,解决安装json后模块不识别的问题
- ESL python调用C模块时传递unicode字符串报错问题解决
- Python安装MySQLDb模块的问题及解决方法
- Python os模块中的isfile()和isdir()函数均返回false问题解决方法
- Python使用urllib模块的urlopen超时问题解决方法
- python -- 解决UnicodeEncodeError问题
- 记录redhat下安装MySQL-python 模块遇到的问题及解决方法
- 【解决问题】解决python安装模块时UnicodeDecodeError
- python中cx_Oracle模块安装遇到的问题与解决方法
- Python实现json解析中的问题及解决方法
- python 调用pymysql模块遇到\转义问题解决办法
- 解决Python3下打印utf-8字符串出现UnicodeEncodeError的问题
- python-多语言功能-读excel文件并写入json,解决json输出unicode
- python “UnicodeEncodeError: 'gbk' codec can't encode character问题解决。
- TensorFlow学习笔记7——Win7下Spyder运行python代码出现UnicodeEncodeError问题的解决
- Python中import导入上一级目录模块及循环import问题的解决