您的位置:首页 > 编程语言 > Python开发

python中json到dict转换

2015-09-06 10:05 603 查看
1、基本是利用python自带json库进行转换

转自 http://www.hulufei.com/post/201004161735
(实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,Python有一个叫simplejson的库可以方便的完成JSON的生成和解析,这个包已经包含在Python2.6中,就叫json
主要包含四个方法: dump和dumps(从Python生成JSON),load和loads(解析JSON成Python的数据类型)dump和dumps的唯一区别是dump会生成一个类文件对象,dumps会生成字符串,同理load和loads分别解析类文件对象和字符串格式的JSON)

2、遇到汉字问题

转自:http://www.cnblogs.com/china-ldw/p/3387800.html


python中包含UTF-8编码中文的列表或字典的输出

在python 下面一个包含中文字符串的列表(list)或字典,直接使用print会出现以下的结果:

>>> dict = {"asdf": "我们的python学习"}
>>> print dict
{'asdf': '\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84python\xe5\xad\xa6\xe4\xb9\xa0'}
在输出处理好的数据结构的时候很不方便,需要使用以下方法进行输出:

>>> import json
>>> print json.dumps(dict, encoding="UTF-8", ensure_ascii=False)
{"asdf": "我们的python学习"}

注意上面的两个参数

如果是字符串,直接输出或者
print str.encode("UTF-8")

print 的重定向:
fin = open("xx.txt", 'r');
print >>fin, "hello world", 12;
fin.close();

但是,要将print的内容重定向到文件中,会报UnicodeEncodeError: 'ascii' codec can't encode characters in position 48-51这个错。
在import sys后加上下面两句就OK了。

reload(sys)

sys.setdefaultencoding('utf8')

3、我自己的处理

经验来自于探索,直接贴代码

从json文件到json字符串,方便输入json测试

json_str =""
try:
with open('fetch.json', 'r') as f:
data = json.load(f, "utf-8")
g_Log.debug("menu dict %s", data)
#print "--------",data["menu"]["button"][0]["name"].encode("utf-8")
print "--------",data
#json_str = json.dumps(data, encoding="UTF-8", ensure_ascii=False)
json_str = json.dumps(data, encoding="UTF-8", ensure_ascii=False)
g_Log.debug("menu json %s", data)
print "jsonstr ",json_str
except :
g_Log.error("Open json file menu.json error ")
return -1, ""


post数据输出时,还需要encode,不然对面解析错误,原因后续探索

self.m_menu_body = json_str.encode("utf-8")


【注】:用于总结,不好的地方请担待
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: