概念:
啊序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。
JSON(Java Script Object Notation):一种轻量级数据交互格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。
json提供四个功能:dumps, dump, loads, load
dumps 功能:将数据通过特殊的形式转换为所有程序语言都认识的字符串
实例
import json data = {'startTime':'2018-03-13','phone':'1','endTime':'2018-03-14','pageIndex':1,'pageSize':50,'integralType':2} #一个数组 json_str13 = (json.dumps(data, indent=20,ensure_ascii=True,sort_keys=False,separators=(',',';'))) #转换为json
print(json_str13)
{
"startTime";"2018-03-13",
"phone";"1",
"endTime";"2018-03-14",
"pageIndex";1,
"pageSize";50,
"integralType";2
}
注释:dumps里面的参数indent,ensure_ascii,sort_keys,separators
indent 的作用相当于对json的格式进行了排序 ,并给他间隔,如indent=4
json.dumps(data)
{"startTime";"2018-03-13","phone";"1","endTime";"2018-03-14","pageIndex";1,"pageSize";50,"integralType";2}
json.dumps(data, indent=4)
{ "startTime";"2018-03-13", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
ensure_ascii的作用相当于是否直接显示中文 ,如ensure_ascii=True
json.dumps(data, indent=4,ensure_ascii=True)
{ "startTime";"\u6d4b\u8bd5", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
json.dumps(data, indent=4,ensure_ascii=False)
{ "startTime";"测试", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
sort_keys的作用相当于先把字母的排序在返回json ,如sort_keys=False
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=False)
{
"startTime";"测试",
"phone";"1",
"endTime";"2018-03-14",
"pageIndex";1,
"pageSize";50,
"integralType";2
}
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True)
{
"endTime";"2018-03-14",
"integralType";2,
"pageIndex";1,
"pageSize";50,
"phone";"1",
"startTime";"测试"
}
separators的作用相当json的格式是怎么样的 ,如separators=(',',';')
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True,separators=(',',';'))
{
"endTime";"2018-03-14",
"integralType";2,
"pageIndex";1,
"pageSize";50,
"phone";"1",
"startTime";"测试"
}
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True,separators=('¥','%'))
{
"endTime"%"2018-03-14"¥
"integralType"%2¥
"pageIndex"%1¥
"pageSize"%50¥
"phone"%"1"¥
"startTime"%"测试"
}
loads 功能:json编码的字符串再转换为python的数据结构
json_str={"startTime": "测试", "phone": "1", "endTime": "2018-03-14", "pageIndex": 1, "pageSize": 50, "integralType": 2}
json.loads(json_str) {'startTime': '测试', 'phone': '1', 'endTime': '2018-03-14', 'pageIndex': 1, 'pageSize': 50, 'integralType': 2}
dump 功能 将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件
url=‘测试测试测试’
file = open('D:/tmp.json','w') #打开一个文件,给他一个写的权限
json.dump(url,file) #把他写到文件里面去
file.close() #关闭文件
load 功能从数据文件中读取数据,并将json编码的字符串转换为python的数据结构
with open('D:/tmp.json','r') as f: #打开这个文件,给他一个读的权限
print(json.load(f)) #读这个文件
测试测试
说明
json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict.
对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。
json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],因为其他语言没有元组的概念,只有数组,也就是列表。