XML是一种传递数据的格式,还有一种常用的传递数据格式—
JSON,它是一种轻量级的数据交换格式,如果要做Web编程,则会用到它。
JSON建构于两种结构:
“键/值”对的集合
值的有序列表
Python标准库中有JSON模块,主要执行序列化和反序列化功能。
序列化:encoding,把一个Python对象编码转化成JSON字符串。
反序列化:decoding,把JSON格式字符串解码转换为Python数据对象。
1,
基本操作
>>>
import json
>>> json.__all__
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']
查看JSON有哪写内建函数。
encoding:
dumps()
>>> data = [{"name":"zhangsan","like":("python","liuyifei"),"age":28}]
>>> data_json =
json.dumps
(data)
>>> data
[{'age': 28, 'name': 'zhangsan', 'like': ('python', 'liuyifei')}]
>>> data_json
'[{"age": 28, "name": "zhangsan", "like": ["python", "liuyifei"]}]'
>>> type(data)
<type 'list'>
>>> type(data_json)
<type 'str'>
注意观察data和data_json的不同——一个是list,一个是str
decoding:
loads() 解码
>>> new_data =
json
.
loads
(data_json)
>>> new_data
[{u'age': 28, u'name': u'zhangsan', u'like': [u'python', u'liuyifei']}]
格式化阅读:
>>> data1 =
json.dumps
(data,
sort_keys
=True,
indent
=2)
>>> print data1
[
{
"age": 28,
"like": [
"python",
"liuyifei"
],
"name": "zhangsan"
}
]
sort_keys=True意思是按照键的字典顺序排序,indent=2是让每个键/值对显示的时候,以缩进两个字符对齐
2,
JSON大量数据处理
上面的操作方法,都是将数据读入内存当作,这在少量数据的情况下没问题;随着时代发展,现在数据越来越多,只靠内存显然是不行的;JSON提供了
load()函数和
dump()函数来解决这个问题(
注意和上面的函数区分)
写入文件:
>>> data
[{u'age': 28, u'name': u'zhangsan', u'like': [u'python', u'liuyifei']}]
>>> with open("D://data.json","w") as f:
json.
dump
(data,f)
读取文件:
>>> with open("D://data.json","r") as f:
data = json.
load
(f)
print data
[{u'age': 28, u'name': u'zhangsan', u'like': [u'python', u'liuyifei']}]
注意:还可以使用
tempfile创建临时文件来实现