json模块与pickle模块dumps和loads以及encode和decode的转换区别

json模块与pickle模块dumps和loads以及encode和decode的转换区别

pickle

dumps:将字典转成byte类型

s = pickle.dumps(d)
b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'

loads:将byte类型转成字典

pickle.loads(s)
{'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}

json

dumps:将字典转成json字符串

s = json.dumps(d)
#'{"2": {"count": 20, "selected": false}, "1": {"count": 10, "selected": true}}'

loads:将json字符串转成字典类型

s = json.loads(s)
#{'2': {'count': 20, 'selected': False}, '1': {'count': 10, 'selected': True}}

base64

encode():将8比特的bytes类型数据进行base64编码,返回编码后的6比特bytes类型

b = base64.b64encode(s)

decode(): 将6比特的base64编码的bytes类型进行解码,返回解码后的8比特的bytes类型

base64.b64decode(b)

encode()和decode()

encode:编码,将字符串编码成byte类型(8比特的)

a = 'asdhuahdkjahfjkaf'
b=a.encode()
#b'asdhuahdkjahfjkaf'

decode():解码,将byte类型解码成字符串类型

 c = b.decode()
#'asdhuahdkjahfjkaf'

获取cookie中的数据并转成字典

pickle.loads(base64.b64decode(cart_str.encode()))

得到的cookie为str类型,将cookie转成byte类型
encode:

cart_str.encode()  #byte类型

通过b64的decode将b64的byte类型转成正常的byte类型,最后loads转成字典

将字典加密设置到cookie

base64.b64encode(pickle.dumps(cart_dict)).decode()

pickle.dumps先将字典转成byte类型,在使用b64转成b64的byte类型

base64.b64encode(pickle.dumps(cart_dict))为byte类型

encode:将byte类型转为字符串类型

base64.b64encode(pickle.dumps(cart_dict)).decode为字符串类型

你可能感兴趣的:(python)