python json序列化和反序列化_python-json&pickle序列化和反序列化

import json

import pickle

"""

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes(把内存数据存到硬盘上)

序列化

将字符串转为字节byte类型

反序列化

将字节byte转为字符串

"""

json(支持dict,list,tuple,str,set,int)就是每个语言都会有的类型

dict_msg = {'name': '小小',

'age': 18,

'adress': '北京市通州区幸福大街'}

json序列化过程

str_dict_msg = json.dumps(dict_msg)

print(

str_dict_msg) # {"name": "\u5c0f\u5c0f", "age": 18, "adress": "\u5317\u4eac\u5e02\u901a\u5dde\u533a\u5e78\u798f\u5927\u8857"}

print(type(str_dict_msg)) # class 'str'>

json反序列化过程

dict_str_dict_msg = json.loads(str_dict_msg)

print(dict_str_dict_msg) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'}

print(type(dict_str_dict_msg)) #

json文件序列化(就是将看起来很像dict,list,tuple,str,set,int类型的转为str进行存储)

# f = open('json序列化','w',encoding='utf-8')

# json.dump(dict_msg,f)

# f.close()

json 反序列化(就是将文件中看起来很像dict,list,tuple,str,set,int类型的转为对应 的类型)

# f = open('json序列化','r',encoding='utf-8')

# file_json_load = json.load(f)

# print(file_json_load) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'} #

# f.close()

pickle同样跟json也是这四种方法

def sum(a, b):

return a + b

pickle序列化

func_sum_pickle_dumps = pickle.dumps(sum)

print(func_sum_pickle_dumps) # b'\x80\x03c__main__\nsum\nq\x00.'

print(pickle.dumps(dict_msg))#b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00\xe5\xb0\x8f\x

pickle反序列化

loads_func_sum_pickle_dumps = pickle.loads(func_sum_pickle_dumps)

print(loads_func_sum_pickle_dumps) # 返回的是函数sum的内存地址

print(loads_func_sum_pickle_dumps(1, 2)) # 3

pickle文件序列化

# f = open('pickle序列化', 'wb') # 注意pickle要用二进制方式写入,不要指定编码格式

# pickle.dump(dict_msg, f)

# f.close()

pickle文件反序列化

# f = open('pickle序列化', 'rb')

# # dict_pick_load = pickle.load(f)

# # print(dict_pick_load) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'}

# # print(type(dict_pick_load)) #

# # f.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值