先看下这个实例:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import json
js = json . loads ( '{"insun": "天下第一","name":"金刚不坏"}' ) js = json . loads ( '{"insun": "天下第一","name":"金刚不坏"}',encoding="GBK" ) print json . dumps ( js )
print json . dumps ( js , ensure_ascii = False )
json字符串转字典时,json.loads()默认编码为utf-8,如果指定了 # -*- coding:utf-8 -*-或# coding=utf-8 则可直接转化,如果没有指定而为其他类型需要指定编码格式; json.dumps()默认编码为ascii,如果json对象中存在中文,需要指定ensure_ascii=False,encoding="utf-8 separators=(',',':')会让字符串按json对象顺序输出字符串
另外对于中文的写入问题,如果将中文写入文件,如果出现UnicodeEncodeError: 'ascii' codec can't encode characters in position 13-16: ordinal not in range(128)是因为python默认编码是ascii,需要改变其默认编码: import sys reload(sys) sys.setdefaultencoding("utf-8")