json —— pickle 的序列化和反序列化

Posted Talk is cheap 。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json —— pickle 的序列化和反序列化相关的知识,希望对你有一定的参考价值。

前言json的序列化和反序列化

 1, json 只能序列化简单的数据类型,如,列表,字典,字符串,等简单的类型,不能序列化复杂的类型。

 2, json 是支持所有的语言的,多以我们跨语言的时候都是用json,(和其他语言交互)

 

json 序列化

json的序列化

json.dumps()

 


import json
info = {
‘zhang‘:‘123‘,
‘qing‘:‘456‘
}
f = open(‘json_wenjian‘,‘w‘,encoding=‘utf-8‘)
f.write(json.dumps(info))
 

 

json的反序列化

json.loads()

 

import json
f = open(‘json_wenjian‘,‘r‘,encoding=‘utf-8‘)
data = json.loads(f.read())
print(data)

 

json小结

  loads ------dumps  和 load-------dump   是成对出现的。

  方式只有点一不一样。 

前言pickle的序列化

  pickle可以序列化python中所有的数据类型,包括函数、类等,下面我们就来看看,如何序列化函数的。还有就是,pickle序列化的是字节,而json序列化的是字符,这个要注意一下

 

pickle的序列化和反序列化

 序列化

import pickle

def fun():
    print(‘hello,world‘)

info = {
    ‘zhang‘:123,
    ‘qing‘:456,
    ‘yao‘:fun
}

with open(‘pickle_wenjian‘,‘wb‘) as f:
    data = pickle.dumps(info)
    f.write(data)

反序列化

 

import pickle

def fun():
    print(‘hello,world‘)



with open(‘pickle_wenjian‘,‘rb‘) as f:
    data = pickle.loads(f.read())
print(data)

 

小结:

  1. son值支持简单的数据类型,pickle支持所有的数据类型。
  2. pickle只能支持python本身的序列化和反序列化,不能用作和其他语言做数据交互,而json可以。
  3. pickle序列化的是整个的数据对象,所以反序列化函数时,函数体中的逻辑变了,是跟着心的函数体走的。
  4. pickle和json在3.0中只能dump一次和load一次,在2.7里面可以dump多次,load多次,anyway,以后只记住,只需要dump一次,load一次就可以了。

  

 







以上是关于json —— pickle 的序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

json/pickle- 序列化和反序列化

Python学习心得 random生成验证码MD5加密pickle与json的序列化和反序列化

pickle和json模块

python --- json模块和pickle模块详解

json与pickle模块

python学习第四天,列表生产式,匿名函数,生成器,内置函数,迭代器,装饰器,json和pickle的序列化和反序列化