不同的编程语言有不同的数据类型; 比如说:
Python的数据类型有(dict、list、string、int、float、long、bool、None)
Java的数据类型有(bool、char、byte、short、int、long、float、double)
C的数据类型有(bit、bool、char、int、short、long、unsigned、double、float)
Tcl的数据类型(int、bool、float、string)
Ruby的数据类型(Number、String、Ranges、Symbols、true、false、Array、Hash)
...
他们的共同特点是,都有字符串类型!
所以要实现不同的编程语言之间对象的传递,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。
JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便.
JSON类型 Python类型
{} dict
[] list
"string" str
1234.56 int或float
true True
false False
null None
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。
json的dumps方法和loads方法,可实现数据的序列化和反序列化。具体来说,dumps方法,可将json格式数据序列为Python的相关的数据类型;loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求。在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决。
下面是json的序列化与反序列化:
1、Json序列化如下:
import jsonprint (json.__all__) #查看json库的所有方法['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']
未在dumps函数中添加参数ensure_ascii=False,结果如下:
#coding: utf-8import jsondict = {'name':'zhangsan', 'age':33, 'address':'红星路'}print('未序列化前的数据类型为:', type(dict))print('为序列化前的数据:', dict)#对dict进行序列化的处理dict_xu = json.dumps(dict) #直接进行序列化print('序列化后的数据类型为:', type(dict_xu))print('序列化后的数据为:', dict_xu)
新闻热点
疑难解答