JSON模块
来源:互联网 发布:中山大学网络教育2017 编辑:程序博客网 时间:2024/06/05 14:07
简介:
在数据传递方面,XML是一种选择,还有一种选择是JSON,它是一种轻量级的数据交换格式。
在json的编码过程中,会存在从python原始类型向json类型的转化过程,具体的转化对照如下:
python标准库中有JSON模块,主要执行序列化和反序列化的功能:
- 序列化 dumps() :encoding,把一个python队形编码转化成JSON字符串,JSON字符串是字符串
- 反序列化 loads() :decoding,把JSON格式字符串解码转换为python数据对象,即为字典对象
注意 :JSON在python中分别由list和dict组成。
dumps()
dumps函数的功能:转换为字符串的格式
语法格式:
dumps(data, sort_keys = True, indent = 2)
其中,sort_keys = True 意思是按照键的字典顺序排序,indent = 2是让每个键/值对显示的时候,以缩进两个字符对齐
例子:
>>> import json>>> data = [{"name":"xiaoxu","lang":("python","english"),"age":40}]>>> data_json = json.dumps(data)>>> print data_json[{"lang": ["python", "english"], "age": 40, "name": "xiaoxu"}]>>>>>>>>> data_j = json.dumps(data,sort_keys = True,indent =2)>>> print data_j[ { "age": 40, "lang": [ "python", "english" ], "name": "xiaoxu" }]>>>
注意:观察data和data_json有两点不同
- lang的值从元组变成了列表。
- 看如下结果
>>> print data_json
[{"lang": ["python", "english"], "age": 40, "name": "xiaoxu"}]
>>> type(data_json)
<type 'str'>
>>> type(data)
<type 'list'>
>>>
loads()
loads 函数的功能:转换为字典的格式
>>> import json>>>>>> print data_json[{"lang": ["python", "english"], "age": 40, "name": "xiaoxu"}] #接上个代码的结果输出>>>>>> new_data = json.loads(data_json)>>> print new_data[{u'lang': [u'python', u'english'], u'age': 40, u'name': u'xiaoxu'}]>>>
注意:解码之后并没有将元组还原
若数据量太大,数据都读入内存,内存会爆满,可以通过一个 tempfile 模块来解决。
关于 tempfile 模块的应用:
若你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFile函数创建临时文件是最好的选择。其他的应用程序是无法找到或打开这个文件的,因为它并没有引用文件系统表。用这个函数创建的临时文件,关闭后会自动删除。
例:
>>> import tempfile>>> data[{'lang': ('python', 'english'), 'age': 40, 'name': 'xiaoxu'}]>>>>>> f = tempfile.NamedTemporaryFile(mode = 'w+')>>> json.dump(data,f)>>> f.flush()>>> print open(f.name,"r").read()[{"lang": ["python", "english"], "age": 40, "name": "xiaoxu"}]
文件的读写
如果要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。
# Writing JSON datawith open('data.json', 'w') as f: json.dump(data, f)# Reading data backwith open('data.json', 'r') as f: data = json.load(f)
参考链接:http://python3-cookbook.readthedocs.io/zh_CN/latest/c06/p02_read-write_json_data.html
1 0
- json模块
- json 模块
- JSON模块
- python pickle模块 json模块
- 全局变量 urllib模块 json模块
- python模块之JSON模块
- python-Json模块【解析Json】
- python-Json模块【解析Json】
- python-Json模块【解析Json】
- python-Json模块【解析Json】
- python解析json:json模块
- json模块教学
- python模块学习---json
- python json模块
- Python JSON模块
- Python之json模块
- Python JSON模块
- Python JSON模块
- 归并(Merge Sort)排序算法
- 老男孩Day1 作业 (用户名密码验证)
- android跳转微信指定公众号界面
- 使用 STL vector中的注意事项以及重写vector时的注意事项
- Shell 学习(二) 关键字:数据类型 字符串
- JSON模块
- 轩辕剑在线(swdol)3D模型浏览器
- 根据前序和中序的遍历序列重建二叉树
- 小满足
- struts2拦截器详解
- 快速排序和快速幂取模
- 分布式系统开发常见问题-1. session的复制与共享 2. 分布式缓存的设计
- HDU1720 A+B Coming
- 近期总结和展望