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 下面一个包含中文字符串的列表(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测试
post数据输出时,还需要encode,不然对面解析错误,原因后续探索
【注】:用于总结,不好的地方请担待
转自 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")
【注】:用于总结,不好的地方请担待
相关文章推荐
- 基python实现多线程网页爬虫
- python杀死一个线程的方法
- IDLE & IPython & 离线文档 & 优先级记忆口诀心法
- Python开发入门与实战19-Windows Azure web 应用部署
- python中__name__=='__main__'的作用
- python+opencv2生成随机字母
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
- 条件、循环和其他语句——Python学习系列之三
- Python学习01
- Python实现的朴素贝叶斯算法经典示例【测试可用】
- Python性能优化的20条建议
- python学习笔记——连接Access数据库
- Python+Selenium搭建UI自动化测试框架
- python对象的比较(is,==,对象大小比较>,<)
- python中面向对象的类,方法,实例
- python学习笔记12
- python对象的存储与读取
- 【OpenCV数字图像处理】(4) 【Python编程】(4) 平移
- 列表和元组——Python学习系列之二
- 用python统计文本里的单词出现次数最多的10个