预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

概念序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。JSON(JavaScriptObjectNotation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是encoding和decodingencoding:把一个Python对象编码转换成Json字符串decoding:把Json格式字符串解码转换成Python对象对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。json.dumps方法对简单数据类型encoding:importjsondata=[{'a':"A",'b':(2,4),'c':3.0}]#list对象print"DATA:",repr(data)data_string=json.dumps(data)print"JSON:",data_string输出:DATA:[{'a':'A','c':3.0,'b':(2,4)}]#python的dict类型的数据是没有顺序存储的JSON:[{"a":"A","c":3.0,"b":[2,4]}]JSON的输出结果与DATA很相似,除了一些微妙的变化,如python的元组类型变成了Json的数组,Python到Json的编码转换规则是:json.loads方法处理简单数据类型的decoding(解码)转换importjsondata=[{'a':"A",'b':(2,4),'c':3.0}]#list对象data_string=json.dumps(data)print"ENCODED:",data_stringdecoded=json.loads(data_string)print"DECODED:",decodedprint"ORIGINAL:",type(data[0]['b'])print"DECODED:",type(decoded[0]['b'])输出:ENCODED:[{"a":"A","c":3.0,"b":[2,4]}]DECODED:[{u'a':u'A',u'c':3.0,u'b':[2,4]}]ORIGINAL:<type'tuple'>DECODED:<type'list'>解码过程中,json的数组最终转换成了python的list,而不是最初的tuple类型,Json到Python的解码规则是:json的人文关怀sort_keys编码后的json格式字符串紧凑的输出,而且也没有顺序,因此dumps方法提供了一些可选的参数,让输出的格式提高可读性,如是告诉编码器按照字典排序(a到z)输出。importjsondata=[{'a':'A','b':(2,4),'c':3.0}]print'DATA:',repr(data)unsorted=json.dumps(data)print'JSON:',json.dumps(data)print'SORT:',json.dumps(data,sort_keys=True)输出:DATA:[{'a':'A','c':3.0,'b':(2,4)}]JSON:[{"a":"A","c":3.0,"b":[2,4]}]SORT:[{"a":"A","b":[2,4],"c":3.0}indent参数根据数据格式缩进显示,读起来更加清晰:importjsondata=[{'a':'A','b':(2,4),'c':3.0}]print'DATA:',repr(data)print'NORMAL:',json.dumps(data,sort_keys=True)print'INDENT:',json.dumps(data,sort_keys=True,indent=2)输出:DATA:[{'a':'A','c':3.0,'b':(2,4)}]NORMAL:[{"a":"A","b":[2,4],"c":3.0}]INDENT:[{"a":"A","b":[2,4],"c":3.0}]separators参数的作用是去掉,,:后面的空格,从上面的输出结果都能看到",:"后面都有个空格,这都是为了美化输出结果的作用,但是在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因此就可以加上separators参数:importjsondata=[{'a':'A','b':(2,4),'c':