首页 > 技术文章 > json和pickle

xqr2018 2018-04-16 23:14 原文

json的序列化和反序列化:

什么是序列化:把对象从内存中变成可存储或传输的过程,称为序列化

关于json:json是一种轻量级的数据交换格式,用于实现不同语言之间的互相交互,目前只能支持简单的数据类型而不能支持函数、类等的交互

Json模块提供了四个功能:dumps、dump、loads、load

dumps与dump:

import json
dic = {
    'kevin':22,
    'cat':23
}

f=open("json_test1","w")
data
=json.dumps(dic) f.write(data) #这两句可以用json.dump(dic,f)代替 f.close()

 

loads和load:

import json

f=open('json_test','r')

data = json.loads(f.read())#相当于data=json.load(f)

f.close()
print(data['kevin'])

 

 

pickle:只支持python之间的数据转化,相对json来说可以支持更多的数据类型

pickle模块也提供了四个功能:dumps、dump、loads、load,但是要注意dump/dumps默认转换成二进制类型,存进文件时要以rb/wb模式打开

dumps与dump:

import pickle

def foo():
    print('ok')
f=open('PICKLE_test','wb')
data = pickle.dumps(foo)
f.write(data)#相当于data=pickle.dump(foo,f)
f.close()

 

loads和load:

import pickle
def foo():
    print('ok')
f=open('PICKLE_test','rb')
data=pickle.loads(f.read())#相当于data=pickle.load(f)
data()

注意:内存地址伴随着一个程序的结束会被释放出来,在另外的程序上是找不到这个内存的,如果要调用这个函数,必须在这个程序上同样定义一个相同的函数才行

 

推荐阅读