json、pickle和base64

 

  • json.dumps() 用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。
  • json.dump() 用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件。
  • json.loads() 用于将str类型的数据转成dict。
  • json.load() 用于从json文件中读取数据。
  • Base64编码是一种“防君子不防小人”的编码方式,优点:速度快,ascii字符,肉眼不可理解。
  • base64.b64encode() 将bytes类型数据进行base64编码(变为字母加数字),返回编码后的bytes类型。
  • base64.b64decode() 将base64编码的bytes类型进行解码,返回解码后的bytes类型。
import base64
import pickle

# 字典
dict1 = {
    'count': "count",
    'selected': True
}


def main():
    # 转成bytes string
    dict2 = pickle.dumps(dict1)
    print('dumps:', dict2)

    # base64 编码
    encode_str = base64.b64encode(dict2)

    print('b64encode:', encode_str)
    print('b64后使用decode:', encode_str.decode())
    print('b64后使用encode:', encode_str.decode().encode())

    decode_str = base64.b64decode(encode_str)
    loads_dict = pickle.loads(decode_str)
    print('b64后使用b64decode():', decode_str)
    print('b64后使用loads:', loads_dict)


if __name__ == '__main__':
    main()

  

 

pickle 的用法类似于json
  

import json
import pickle

dict1 = {
    'count': "count",
    'selected': True
}

jsDumps = json.dumps(dict1)
pkDumps = pickle.dumps(dict1)
jsLoads = json.loads(jsDumps)
pkLoads = pickle.loads(pkDumps)

print(dict1)
print(type(dict1))

print(jsDumps)
print(type(jsDumps))

print(pkDumps)
print(type(pkDumps))

print(jsLoads)
print(type(jsLoads))

print(pkLoads)
print(type(pkLoads))

 

pickle 只能在python中用python文件间序列化,实现了两个python 内存数据的交互(可序列化任何对象(类,列表、字典等)) 

json 在任何软件间可以在内存数据之间的交互,只能序列化常规的对象(列表 ,字典等)

猜你喜欢

转载自www.cnblogs.com/liyiyi/p/11568811.html