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一次就可以了。

  

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com